]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix #618: enabling interface-automatic disables DNS-over-TLS.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 Feb 2022 09:58:53 +0000 (10:58 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 Feb 2022 09:58:53 +0000 (10:58 +0100)
  Adds the option to list interface-automatic-ports.

12 files changed:
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
services/listen_dnsport.c
smallapp/unbound-checkconf.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index abdf7c878fa98904ea5c47787d3e6abae5dd8c1e..54bc8ac75d266488f3e73e77437d5d335683605b 100644 (file)
@@ -1,6 +1,8 @@
 11 February 2022: Wouter
        - Fix #624: Unable to stop Unbound in Windows console (does not
          respond to CTRL+C command).
+       - Fix #618: enabling interface-automatic disables DNS-over-TLS.
+         Adds the option to list interface-automatic-ports.
 
 7 February 2022: Wouter
        - Fix that TCP interface does not use TLS when TLS is also configured.
index 76ac604f9a6e4700d50d1d76d3cfa735263df506..146ace827b4110178b14d46277653234ad2a448e 100644 (file)
@@ -55,6 +55,10 @@ server:
        # Socket options are not supported on all platforms. experimental.
        # interface-automatic: no
 
+       # instead of the default port, open additional ports separated by
+       # spaces when interface-automatic is enabled, by listing them here.
+       # interface-automatic-ports: ""
+
        # port to answer queries from
        # port: 53
 
index 5a75e3199c5eb4aadd4c77cb929381f54e2ad26e..593bf860aec6559b94bba387ab292e6d4ffbb162 100644 (file)
@@ -140,6 +140,15 @@ ip\-transparent you can select which (future) interfaces Unbound provides
 service on.  This feature is experimental, and needs support in your OS for
 particular socket options.  Default value is no.
 .TP
+.B interface\-automatic\-ports: \fI<string>
+List the port numbers that interface-automatic listens on. If empty, the
+default port is listened on. The port numbers are separated by spaces in the
+string. Default is "".
+.IP
+This can be used to have interface automatic to deal with the interface,
+and listen on the normal port number, by including it in the list, and
+also https or dns over tls port numbers by putting them in the list as well.
+.TP
 .B outgoing\-interface: \fI<ip address or ip6 netblock>
 Interface to use to connect to the network. This interface is used to send
 queries to authoritative servers and receive their replies. Can be given
index d6a90f1e68d86aafd2ad3b6ffeb99360f6d20dcf..afe4cb71d2ad2b0214805b9514cbcfd5427ebdf4 100644 (file)
@@ -47,6 +47,7 @@
 #ifdef USE_TCP_FASTOPEN
 #include <netinet/tcp.h>
 #endif
+#include <ctype.h>
 #include "services/listen_dnsport.h"
 #include "services/outside_network.h"
 #include "util/netevent.h"
@@ -1716,6 +1717,63 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs,
        }
        /* create ip4 and ip6 ports so that return addresses are nice. */
        if(do_auto || num_ifs == 0) {
+               if(do_auto && cfg->if_automatic_ports &&
+                       cfg->if_automatic_ports[0]!=0) {
+                       char* now = cfg->if_automatic_ports;
+                       while(now && *now) {
+                               char* after;
+                               int extraport;
+                               while(isspace((unsigned char)*now))
+                                       now++;
+                               if(!*now)
+                                       break;
+                               after = now;
+                               extraport = (int)strtol(now, &after, 10);
+                               if(extraport < 0 || extraport > 65535) {
+                                       log_err("interface-automatic-ports port number out of range, at position %d of '%s'", (int)(now-cfg->if_automatic_ports)+1, cfg->if_automatic_ports);
+                                       listening_ports_free(list);
+                                       return NULL;
+                               }
+                               if(extraport == 0 && now == after) {
+                                       log_err("interface-automatic-ports could not be parsed, at position %d of '%s'", (int)(now-cfg->if_automatic_ports)+1, cfg->if_automatic_ports);
+                                       listening_ports_free(list);
+                                       return NULL;
+                               }
+                               now = after;
+                               snprintf(portbuf, sizeof(portbuf), "%d", extraport);
+                               if(do_ip6) {
+                                       hints.ai_family = AF_INET6;
+                                       if(!ports_create_if("::0",
+                                               do_auto, cfg->do_udp, do_tcp,
+                                               &hints, portbuf, &list,
+                                               cfg->so_rcvbuf, cfg->so_sndbuf,
+                                               cfg->ssl_port, cfg->tls_additional_port,
+                                               cfg->https_port, reuseport, cfg->ip_transparent,
+                                               cfg->tcp_mss, cfg->ip_freebind,
+                                               cfg->http_nodelay, cfg->use_systemd,
+                                               cfg->dnscrypt_port, cfg->ip_dscp)) {
+                                               listening_ports_free(list);
+                                               return NULL;
+                                       }
+                               }
+                               if(do_ip4) {
+                                       hints.ai_family = AF_INET;
+                                       if(!ports_create_if("0.0.0.0",
+                                               do_auto, cfg->do_udp, do_tcp,
+                                               &hints, portbuf, &list,
+                                               cfg->so_rcvbuf, cfg->so_sndbuf,
+                                               cfg->ssl_port, cfg->tls_additional_port,
+                                               cfg->https_port, reuseport, cfg->ip_transparent,
+                                               cfg->tcp_mss, cfg->ip_freebind,
+                                               cfg->http_nodelay, cfg->use_systemd,
+                                               cfg->dnscrypt_port, cfg->ip_dscp)) {
+                                               listening_ports_free(list);
+                                               return NULL;
+                                       }
+                               }
+                       }
+                       return list;
+               }
                if(do_ip6) {
                        hints.ai_family = AF_INET6;
                        if(!ports_create_if(do_auto?"::0":"::1", 
index fe18c3c83f93829128dfcf2d5351b30d22f3328f..c44a1c98e9bb7eedf41611c0152f2548b1b93b3b 100644 (file)
@@ -408,6 +408,29 @@ interfacechecks(struct config_file* cfg)
        }
 }
 
+/** check interface-automatic-ports */
+static void
+ifautomaticportschecks(char* ifautomaticports)
+{
+       char* now = ifautomaticports;
+       while(now && *now) {
+               char* after;
+               int extraport;
+               while(isspace((unsigned char)*now))
+                       now++;
+               if(!*now)
+                       break;
+               after = now;
+               extraport = (int)strtol(now, &after, 10);
+               if(extraport < 0 || extraport > 65535)
+                       fatal_exit("interface-automatic-ports: port out of range at position %d in '%s'", (int)(now-ifautomaticports)+1, ifautomaticports);
+               if(extraport == 0 && now == after)
+                       fatal_exit("interface-automatic-ports: parse error at position %d in '%s'", (int)(now-ifautomaticports)+1, ifautomaticports);
+               log_info("extraport %d", extraport);
+               now = after;
+       }
+}
+
 /** check acl ips */
 static void
 aclchecks(struct config_file* cfg)
@@ -608,6 +631,7 @@ morechecks(struct config_file* cfg)
        warn_hosts("stub-host", cfg->stubs);
        warn_hosts("forward-host", cfg->forwards);
        interfacechecks(cfg);
+       ifautomaticportschecks(cfg->if_automatic_ports);
        aclchecks(cfg);
        tcpconnlimitchecks(cfg);
 
index 969d664b4795f9510060d0bfb4647bc1c7328f9a..19a44d8340c081fea4f7fedf728dfc3db3b3f8ef 100644 (file)
@@ -195,6 +195,7 @@ config_create(void)
        cfg->use_systemd = 0;
        cfg->do_daemonize = 1;
        cfg->if_automatic = 0;
+       cfg->if_automatic_ports = NULL;
        cfg->so_rcvbuf = 0;
        cfg->so_sndbuf = 0;
        cfg->so_reuseport = REUSEPORT_DEFAULT;
@@ -559,6 +560,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_YNO("http-nodelay:", http_nodelay)
        else S_YNO("http-notls-downstream:", http_notls_downstream)
        else S_YNO("interface-automatic:", if_automatic)
+       else S_STR("interface-automatic-ports:", if_automatic_ports)
        else S_YNO("use-systemd:", use_systemd)
        else S_YNO("do-daemonize:", do_daemonize)
        else S_NUMBER_NONZERO("port:", port)
@@ -990,6 +992,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_IFC(opt, "interface", num_ifs, ifs)
        else O_IFC(opt, "outgoing-interface", num_out_ifs, out_ifs)
        else O_YNO(opt, "interface-automatic", if_automatic)
+       else O_STR(opt, "interface-automatic-ports", if_automatic_ports)
        else O_DEC(opt, "port", port)
        else O_DEC(opt, "outgoing-range", outgoing_num_ports)
        else O_DEC(opt, "outgoing-num-tcp", outgoing_num_tcp)
@@ -1534,6 +1537,7 @@ config_delete(struct config_file* cfg)
        free(cfg->directory);
        free(cfg->logfile);
        free(cfg->pidfile);
+       free(cfg->if_automatic_ports);
        free(cfg->target_fetch_policy);
        free(cfg->ssl_service_key);
        free(cfg->ssl_service_pem);
index c7c9a0a48e6b64e1209d867a4d609d8b5433a500..54628c0c8befaeed6b2aa917758786aed7846e6b 100644 (file)
@@ -205,6 +205,8 @@ struct config_file {
        /** automatic interface for incoming messages. Uses ipv6 remapping,
         * and recvmsg/sendmsg ancillary data to detect interfaces, boolean */
        int if_automatic;
+       /** extra ports to open if if_automatic enabled, or NULL for default */
+       char* if_automatic_ports;
        /** SO_RCVBUF size to set on port 53 UDP socket */
        size_t so_rcvbuf;
        /** SO_SNDBUF size to set on port 53 UDP socket */
index f95f2fc7e61ffd2a986f058f60901e8a120bf455..7a052201d82c1cb7948b98f91d037ccfc9dad76f 100644 (file)
@@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 358
-#define YY_END_OF_BUFFER 359
+#define YY_NUM_RULES 359
+#define YY_END_OF_BUFFER 360
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -363,399 +363,400 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[3558] =
+static const flex_int16_t yy_accept[3565] =
     {   0,
-        1,    1,  332,  332,  336,  336,  340,  340,  344,  344,
-        1,    1,  348,  348,  352,  352,  359,  356,    1,  330,
-      330,  357,    2,  357,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  332,  333,  333,  334,
-      357,  336,  337,  337,  338,  357,  343,  340,  341,  341,
-      342,  357,  344,  345,  345,  346,  357,  355,  331,    2,
-      335,  357,  355,  351,  348,  349,  349,  350,  357,  352,
-      353,  353,  354,  357,  356,    0,    1,    2,    2,    2,
-        2,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  332,
-        0,  336,    0,  343,    0,  340,  344,    0,  355,    0,
-        2,    2,  355,  351,    0,  348,  352,    0,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  355,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  130,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      140,  356,  356,  356,  356,  356,  356,  356,  355,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  112,  356,
-      329,  356,  356,  356,  356,  356,  356,  356,  356,    8,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      131,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  145,  356,  356,  355,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  322,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  355,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,   67,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  251,  356,   14,
-       15,  356,   19,   18,  356,  356,  235,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      138,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  233,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,    3,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  355,  356,  356,
-      356,  356,  356,  356,  356,  316,  356,  356,  315,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  339,  356,
-
-      356,  356,  356,  356,  356,  356,  356,   66,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,   70,  356,  285,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  323,  324,  356,  356,
-      356,  356,  356,  356,  356,  356,   71,  356,  356,  139,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  134,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  222,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,   21,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      165,  356,  356,  356,  356,  356,  355,  339,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  110,
-      356,  356,  356,  356,  356,  356,  356,  293,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  191,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  164,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  109,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,   35,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,   36,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,   68,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  137,  356,  356,  356,  355,  356,
-      356,  356,  356,  356,  129,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-       69,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  255,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  192,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,   57,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  273,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,   61,  356,   62,  356,  356,  356,
-      356,  356,  113,  356,  114,  356,  356,  356,  356,  356,
-      111,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,    7,  356,  356,  356,  356,  355,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  244,  356,  356,
-      356,  356,  168,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  256,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,   48,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,   58,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  214,  356,  213,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,   16,   17,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,   72,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  221,  356,  356,  356,
-      356,  356,  356,  116,  356,  115,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  205,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  146,  356,  356,  356,  355,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  104,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,   92,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  234,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,   97,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,   65,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  208,  209,  356,  356,  356,
-
-      287,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,    6,  356,  356,  356,  356,  356,
-      356,  356,  306,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  291,  356,  356,  356,  356,  356,  356,  356,  317,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,   45,  356,  356,  356,  356,   47,
-      356,  356,  356,   93,  356,  356,  356,  356,  356,   55,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  355,  356,  201,  356,  356,  356,  141,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  226,  356,
-      202,  356,  356,  356,  241,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,   56,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  143,  122,  356,  123,
-      356,  356,  356,  356,  121,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  161,  356,  356,   53,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  272,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  203,  356,  356,  356,  356,
-      356,  206,  356,  212,  356,  356,  356,  356,  356,  356,
-      240,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  108,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  135,  356,
-      356,  356,  356,  356,  356,  356,  356,   63,  356,  356,
-      356,   29,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,   20,  356,  356,  356,  356,  356,
-      356,   30,   39,  356,  173,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  199,
-      356,  356,  355,  356,  356,  356,  356,  356,  356,   80,
-       82,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  295,  356,  356,  356,  356,  252,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  124,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  160,  356,   49,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      310,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      167,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  304,  356,  356,  356,  232,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  320,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  185,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  117,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  180,  356,  193,  356,  356,
-
-      356,  356,  356,  356,  356,  355,  356,  149,  356,  356,
-      356,  356,  356,  103,  356,  356,  356,  356,  224,  356,
-      356,  356,  356,  356,  356,  242,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  264,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  142,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  184,  356,  356,  356,  356,  356,  356,   83,  356,
-       84,  356,  356,  356,  356,  356,  356,   64,  313,  356,
-      356,  356,  356,  356,   91,  194,  356,  215,  356,  245,
-
-      356,  356,  207,  288,  356,  356,  356,  356,  356,  356,
-       76,  356,  196,  356,  356,  356,  356,  356,  356,    9,
-      356,  356,  356,  356,  356,  107,  356,  356,  356,  356,
-      356,  277,  356,  356,  356,  356,  223,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      355,  356,  356,  356,  356,  183,  356,  356,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  169,  356,  294,  356,
-      356,  356,  356,  356,  263,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  236,  356,  356,  356,
-      356,  356,  286,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      166,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  314,  356,  195,
-      356,  356,  356,  356,  356,  356,  356,  356,   75,   77,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      106,  356,  356,  356,  356,  356,  275,  356,  356,  356,
-
-      356,  290,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  228,   37,   31,   33,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,   38,  356,   32,   34,  356,  356,  356,  356,  356,
-      356,  356,  356,  102,  356,  179,  356,  356,  356,  356,
-      356,  356,  356,  355,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  230,  227,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,   74,  356,  356,  356,  144,
-      356,  125,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  162,   50,  356,  356,  356,  347,   13,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      308,  356,  311,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,   12,  356,  356,   22,  356,
-      356,  356,  356,  356,  356,  281,  356,  356,  356,  356,
-      292,  356,  356,  356,  356,   78,  356,  238,  356,  356,
-      356,  356,  356,  229,  356,  356,   73,  356,  356,  356,
-      356,  356,  356,   23,  356,  356,   46,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  178,
-      177,  356,  356,  347,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  356,  231,  225,  356,  243,  356,  356,  296,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,   85,  356,  356,  356,  356,  356,
-      276,  356,  356,  356,  356,  211,  356,  356,  356,  356,
-      356,  237,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  283,  356,  356,  356,  318,  319,  175,  356,  356,
-      356,   79,  356,  356,  356,  356,  186,  356,  356,  356,
-      118,  120,  119,  356,  356,  356,   25,  356,  356,  170,
-
-      356,  172,  356,  216,  356,  356,  356,  356,  176,  356,
-      356,  356,  356,  246,  356,  356,  356,  356,  356,  356,
-      356,  151,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  254,  356,  356,  356,  356,  356,
-      356,  356,  327,  356,   27,  356,  289,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,   89,  217,  356,  356,  356,  274,  356,
-      312,  356,  210,  356,  356,  356,  356,  356,  284,   59,
-      356,  356,  356,  356,  356,  356,    4,  356,  356,  356,
-      356,  133,  356,  150,  356,  356,  356,  190,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  249,   40,   41,  356,
-      356,  356,  356,  356,  356,  356,  297,  356,  356,  356,
-      356,  356,  356,  356,  262,  356,  356,  356,  356,  356,
-      356,  356,  356,  220,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,   88,  356,
-       60,  356,  280,  356,  250,  356,  356,  356,  356,  356,
-       11,  356,  356,  356,  356,  356,  356,  356,  356,  132,
-      356,  356,  356,  356,  356,  218,   94,  356,  356,   43,
-      356,  356,  356,  356,  356,  356,  356,  356,  182,  356,
-
-      356,  356,  356,  356,  356,  356,  153,  356,  356,  356,
-      356,  253,  356,  356,  356,  356,  356,  261,  356,  356,
-      356,  356,  147,  356,  356,  356,  126,  128,  127,  356,
-      356,  356,   96,  100,   95,  163,  356,  356,  356,  356,
-       86,  282,  356,  356,  356,  356,  356,  356,   10,  356,
-      356,  356,  356,  356,  278,  321,  356,  356,  356,  356,
-      356,  356,  326,   42,  356,  356,  356,  356,  356,  181,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  101,   99,  356,   54,  356,
-
-      356,   87,  309,  356,  356,  356,  356,   24,  356,  356,
-      356,  356,  356,  204,  356,  356,  356,  356,  356,  356,
-      219,  356,  356,  356,  356,  356,  356,  356,  356,  200,
-      356,  356,  171,   81,  356,  356,  356,  356,  356,  298,
-      356,  356,  356,  356,  356,  356,  356,  258,  356,  356,
-      257,  148,  356,  356,   98,   51,  356,  154,  155,  158,
-      159,  156,  157,   90,  307,  356,  356,  279,  136,  356,
-      356,  356,   26,  356,  174,  356,  356,  356,  356,  198,
-      356,  248,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-
-      356,  356,  188,  187,   44,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  305,  356,  356,
-      356,  356,  105,  356,  247,  356,  271,  302,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  328,
-      356,   52,    5,  356,  356,  239,  356,  356,  303,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  259,   28,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  260,  356,  356,  356,  152,  356,  356,  356,
-      356,  356,  356,  356,  356,  189,  356,  197,  356,  356,
-
-      356,  356,  356,  356,  356,  356,  356,  299,  356,  356,
-      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  325,  356,  356,  267,  356,
-      356,  356,  356,  356,  300,  356,  356,  356,  356,  356,
-      356,  301,  356,  356,  356,  265,  356,  268,  269,  356,
-      356,  356,  356,  356,  266,  270,    0
+        1,    1,  333,  333,  337,  337,  341,  341,  345,  345,
+        1,    1,  349,  349,  353,  353,  360,  357,    1,  331,
+      331,  358,    2,  358,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  333,  334,  334,  335,
+      358,  337,  338,  338,  339,  358,  344,  341,  342,  342,
+      343,  358,  345,  346,  346,  347,  358,  356,  332,    2,
+      336,  358,  356,  352,  349,  350,  350,  351,  358,  353,
+      354,  354,  355,  358,  357,    0,    1,    2,    2,    2,
+        2,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  333,
+        0,  337,    0,  344,    0,  341,  345,    0,  356,    0,
+        2,    2,  356,  352,    0,  349,  353,    0,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  356,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  131,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      141,  357,  357,  357,  357,  357,  357,  357,  356,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  113,  357,
+      330,  357,  357,  357,  357,  357,  357,  357,  357,    8,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      132,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  146,  357,  357,  356,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  323,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  356,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,   68,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  252,  357,   14,
+       15,  357,   19,   18,  357,  357,  236,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      139,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  234,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,    3,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  356,  357,  357,
+      357,  357,  357,  357,  357,  317,  357,  357,  316,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  340,  357,
+
+      357,  357,  357,  357,  357,  357,  357,   67,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,   71,  357,  286,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  324,  325,  357,  357,
+      357,  357,  357,  357,  357,  357,   72,  357,  357,  140,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  135,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  223,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,   21,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      166,  357,  357,  357,  357,  357,  356,  340,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  111,
+      357,  357,  357,  357,  357,  357,  357,  294,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  192,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  165,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  110,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,   35,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,   36,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,   69,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  138,  357,  357,  357,  356,  357,
+      357,  357,  357,  357,  130,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+       70,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  256,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  193,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,   57,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  274,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,   62,  357,   63,  357,  357,  357,
+      357,  357,  114,  357,  115,  357,  357,  357,  357,  357,
+      112,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,    7,  357,  357,  357,  357,  356,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  245,  357,  357,
+      357,  357,  169,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  257,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,   48,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,   58,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  215,  357,  214,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,   16,   17,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,   73,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  222,  357,  357,  357,
+      357,  357,  357,  117,  357,  116,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  206,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  147,  357,  357,  357,  356,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  105,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,   93,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  235,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,   98,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,   66,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  209,  210,  357,  357,  357,
+
+      288,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,    6,  357,  357,  357,  357,  357,
+      357,  357,  307,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  292,  357,  357,  357,  357,  357,  357,  357,  318,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,   45,  357,  357,  357,  357,   47,
+      357,  357,  357,   94,  357,  357,  357,  357,  357,   55,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  356,  357,  202,  357,  357,  357,  142,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  227,  357,
+      203,  357,  357,  357,  242,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,   56,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  144,  123,  357,  124,
+      357,  357,  357,  357,  122,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  162,  357,  357,   53,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  273,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  204,  357,  357,  357,  357,
+      357,  207,  357,  213,  357,  357,  357,  357,  357,  357,
+      241,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  109,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  136,  357,
+      357,  357,  357,  357,  357,  357,  357,   64,  357,  357,
+      357,   29,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,   20,  357,  357,  357,  357,  357,
+      357,   30,   39,  357,  174,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  200,
+      357,  357,  356,  357,  357,  357,  357,  357,  357,   81,
+       83,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  296,  357,  357,  357,  357,  253,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  125,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  161,  357,   49,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      311,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      168,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  305,  357,  357,  357,  233,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  321,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  186,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  118,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  181,  357,  194,  357,  357,
+
+      357,  357,  357,  357,  357,  356,  357,  150,  357,  357,
+      357,  357,  357,  104,  357,  357,  357,  357,  225,  357,
+      357,  357,  357,  357,  357,  243,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  265,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  143,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  185,  357,  357,  357,  357,  357,  357,   84,  357,
+       85,  357,  357,  357,  357,  357,  357,   65,  314,  357,
+      357,  357,  357,  357,   92,  195,  357,  216,  357,  246,
+
+      357,  357,  208,  289,  357,  357,  357,  357,  357,  357,
+       77,  357,  197,  357,  357,  357,  357,  357,  357,    9,
+      357,  357,  357,  357,  357,  108,  357,  357,  357,  357,
+      357,  278,  357,  357,  357,  357,  224,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      356,  357,  357,  357,  357,  184,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  170,  357,  295,  357,
+      357,  357,  357,  357,  264,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  237,  357,  357,  357,
+      357,  357,  287,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      167,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  315,  357,  196,
+      357,  357,  357,  357,  357,  357,  357,  357,   76,   78,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      107,  357,  357,  357,  357,  357,  276,  357,  357,  357,
+
+      357,  291,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  229,   37,   31,   33,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,   38,  357,   32,   34,  357,  357,  357,  357,  357,
+      357,  357,  357,  103,  357,  180,  357,  357,  357,  357,
+      357,  357,  357,  356,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  231,  228,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,   75,  357,  357,  357,  145,
+      357,  126,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  163,   50,  357,  357,  357,  348,   13,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      309,  357,  312,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,   12,  357,  357,   22,  357,
+      357,  357,  357,  357,  357,  282,  357,  357,  357,  357,
+      293,  357,  357,  357,  357,   79,  357,  239,  357,  357,
+      357,  357,  357,  230,  357,  357,   74,  357,  357,  357,
+      357,  357,  357,   23,  357,  357,   46,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  179,
+      178,  357,  357,  348,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  232,  226,  357,  244,  357,  357,  297,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,   86,  357,  357,  357,  357,  357,
+      277,  357,  357,  357,  357,  212,  357,  357,  357,  357,
+      357,  238,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  284,  357,  357,  357,  319,  320,  176,  357,  357,
+      357,   80,  357,  357,  357,  357,  187,  357,  357,  357,
+      119,  121,  120,  357,  357,  357,   25,  357,  357,  171,
+
+      357,  173,  357,  217,  357,  357,  357,  357,  177,  357,
+      357,  357,  357,  247,  357,  357,  357,  357,  357,  357,
+      357,  152,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  255,  357,  357,  357,  357,  357,
+      357,  357,  328,  357,   27,  357,  290,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,   90,  218,  357,  357,  357,  275,  357,
+      313,  357,  211,  357,  357,  357,  357,  357,  285,   59,
+      357,  357,  357,  357,  357,  357,    4,  357,  357,  357,
+      357,  134,  357,  151,  357,  357,  357,  191,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  250,   40,   41,  357,
+      357,  357,  357,  357,  357,  357,  298,  357,  357,  357,
+      357,  357,  357,  357,  263,  357,  357,  357,  357,  357,
+      357,  357,  357,  221,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,   89,  357,
+      357,   60,  357,  281,  357,  251,  357,  357,  357,  357,
+      357,   11,  357,  357,  357,  357,  357,  357,  357,  357,
+      133,  357,  357,  357,  357,  357,  219,   95,  357,  357,
+       43,  357,  357,  357,  357,  357,  357,  357,  357,  183,
+
+      357,  357,  357,  357,  357,  357,  357,  154,  357,  357,
+      357,  357,  254,  357,  357,  357,  357,  357,  262,  357,
+      357,  357,  357,  148,  357,  357,  357,  127,  129,  128,
+      357,  357,  357,   97,  101,   96,  164,  357,  357,  357,
+      357,   87,  357,  283,  357,  357,  357,  357,  357,  357,
+       10,  357,  357,  357,  357,  357,  279,  322,  357,  357,
+      357,  357,  357,  357,  327,   42,  357,  357,  357,  357,
+      357,  182,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  102,  100,  357,
+
+       54,  357,  357,   88,  357,  310,  357,  357,  357,  357,
+       24,  357,  357,  357,  357,  357,  205,  357,  357,  357,
+      357,  357,  357,  220,  357,  357,  357,  357,  357,  357,
+      357,  357,  201,  357,  357,  172,   82,  357,  357,  357,
+      357,  357,  299,  357,  357,  357,  357,  357,  357,  357,
+      259,  357,  357,  258,  149,  357,  357,   99,   51,  357,
+      357,  155,  156,  159,  160,  157,  158,   91,  308,  357,
+      357,  280,  137,  357,  357,  357,   26,  357,  175,  357,
+      357,  357,  357,  199,  357,  249,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  357,  357,  357,  357,  357,  189,  188,   44,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  306,  357,  357,  357,  357,  106,  357,
+      248,  357,  272,  303,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  329,  357,   52,   61,    5,
+      357,  357,  240,  357,  357,  304,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  260,   28,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  261,
+      357,  357,  357,  153,  357,  357,  357,  357,  357,  357,
+
+      357,  357,  190,  357,  198,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  300,  357,  357,  357,  357,  357,
+      357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  326,  357,  357,  268,  357,  357,  357,  357,
+      357,  301,  357,  357,  357,  357,  357,  357,  302,  357,
+      357,  357,  266,  357,  269,  270,  357,  357,  357,  357,
+      357,  267,  271,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -798,17 +799,17 @@ static const YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[3576] =
+static const flex_int16_t yy_base[3583] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112,   96,  118,  124,  136, 3060, 2545,   81, 6947,
-     6947, 6947,  129,   52,  130,   63,  131,  152,   70,  140,
+       90,  112,   96,  118,  124,  136, 3060, 2545,   81, 6961,
+     6961, 6961,  129,   52,  130,   63,  131,  152,   70,  140,
       149,  156,   57,   88,   76,  173,  175,   95,  197,  145,
-      185,  199,  208,  213,  178,  123, 2505, 6947, 6947, 6947,
-      107, 2460, 6947, 6947, 6947,  154, 2315, 2089, 6947, 6947,
-     6947,  245, 2007, 6947, 6947, 6947,  163, 1936, 6947,  249,
-     6947,  253,  148, 1835, 1793, 6947, 6947, 6947,  257, 1696,
-     6947, 6947, 6947,  233, 1543,  263,  201,    0,  267,    0,
+      185,  199,  208,  213,  178,  123, 2505, 6961, 6961, 6961,
+      107, 2460, 6961, 6961, 6961,  154, 2315, 2089, 6961, 6961,
+     6961,  245, 2007, 6961, 6961, 6961,  163, 1936, 6961,  249,
+     6961,  253,  148, 1835, 1793, 6961, 6961, 6961,  257, 1696,
+     6961, 6961, 6961,  233, 1543,  263,  201,    0,  267,    0,
         0,  165,  191,  221,  252,  205,  181,  265,   92,  261,
 
       216,  263,  271,  272,  210,  279,  274,  282,  278,  291,
@@ -838,10 +839,10 @@ static const flex_int16_t yy_base[3576] =
       738,  742,  745,  743,  753,  754,  755,  759,  758,  774,
       763,  764,  771,  784,  765,  767,  769,  775,  796,  785,
       798,  799,  800,  803,  804,  801,  808,  807,  809,  811,
-      823,  813,  820,  826,  827,  829,  830,  837,  832, 6947,
+      823,  813,  820,  826,  827,  829,  830,  837,  832, 6961,
       834,  836,  848,  847,  850,  853,  843,  859,  860,  839,
       870,  866,  863,  881,  903,  867,  871,  873,  876,  872,
-     6947,  893,  883,  927,  885,  889,  911,  895,  907,  913,
+     6961,  893,  883,  927,  885,  889,  911,  895,  907,  913,
       916,  909,  914,  921,  923,  917,  920,  944,  945,  935,
 
       936,  947,  952,  951,  959,  960,  954,  958,  963,  971,
@@ -850,16 +851,16 @@ static const flex_int16_t yy_base[3576] =
      1011, 1012, 1020, 1006, 1014, 1028, 1026, 1024, 1034, 1033,
      1035, 1007, 1041, 1039, 1044, 1051, 1048, 1054, 1063, 1058,
      1059, 1060, 1064, 1065, 1066, 1068, 1071, 1072, 1073, 1076,
-     1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6947, 1100,
-     6947, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6947,
+     1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6961, 1100,
+     6961, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6961,
      1111, 1114, 1113, 1120, 1124, 1117, 1128, 1130, 1136, 1137,
      1138, 1139, 1140, 1142, 1149, 1144, 1154, 1152, 1147, 1158,
 
      1156, 1159, 1115, 1160, 1162, 1166, 1167, 1168, 1169, 1188,
-     6947, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201,
+     6961, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201,
      1203, 1211, 1205, 1213, 1215, 1212, 1217, 1173, 1219, 1223,
      1225, 1228, 1229, 1231, 1232, 1234, 1235, 1237, 1238, 1240,
-     1239, 1247, 1250, 1251, 6947, 1252, 1254, 1255, 1268, 1263,
+     1239, 1247, 1250, 1251, 6961, 1252, 1254, 1255, 1268, 1263,
      1264, 1267, 1269, 1270, 1271, 1272, 1274, 1278,  517, 1273,
      1291, 1288, 1284, 1298, 1293, 1294, 1295, 1299, 1301, 1300,
      1302, 1304, 1313, 1310, 1316, 1325, 1328, 1327, 1330, 1337,
@@ -867,7 +868,7 @@ static const flex_int16_t yy_base[3576] =
      1350, 1351, 1360, 1356, 1357, 1359, 1358, 1364, 1365, 1367,
 
      1362, 1368, 1370, 1372, 1374, 1381, 1379, 1385, 1390, 1386,
-     1391, 1387, 1380, 1395, 1403, 1397, 1406, 6947, 1413, 1308,
+     1391, 1387, 1380, 1395, 1403, 1397, 1406, 6961, 1413, 1308,
      1409, 1410, 1415, 1416, 1417, 1418, 1423, 1424, 1425, 1427,
      1426, 1429, 1430, 1433, 1435, 1437, 1440, 1442, 1450, 1445,
      1455, 1462, 1461, 1443, 1447, 1457, 1463, 1467, 1466, 1474,
@@ -881,20 +882,20 @@ static const flex_int16_t yy_base[3576] =
      1601, 1595, 1603, 1602, 1604, 1611, 1610, 1614, 1615, 1605,
      1616, 1620, 1626, 1627, 1628, 1631, 1630, 1635, 1638, 1636,
      1640, 1642, 1648, 1649, 1650, 1652, 1633, 1656, 1659, 1664,
-     1667, 1661, 6947, 1657, 1675, 1651, 1673, 1674, 1653, 1679,
-     1687, 1680, 1682, 1683, 1684, 1685, 1710, 6947, 1691, 6947,
-     6947, 1690, 6947, 6947, 1693, 1692, 6947, 1694, 1695, 1708,
+     1667, 1661, 6961, 1657, 1675, 1651, 1673, 1674, 1653, 1679,
+     1687, 1680, 1682, 1683, 1684, 1685, 1710, 6961, 1691, 6961,
+     6961, 1690, 6961, 6961, 1693, 1692, 6961, 1694, 1695, 1708,
      1699, 1713, 1716, 1720, 1718, 1711, 1721, 1733, 1742, 1728,
      1734, 1726, 1735, 1751, 1738, 1752, 1740, 1750, 1758, 1759,
      1757, 1764, 1771, 1766, 1775, 1768, 1779, 1777, 1780, 1786,
 
      1787, 1791, 1793, 1788, 1794, 1797, 1796, 1798, 1799, 1802,
      1804, 1723, 1805, 1808, 1809, 1810, 1818, 1815, 1823, 1830,
-     6947, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839,
+     6961, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839,
      1849, 1851, 1845, 1842, 1852, 1854, 1855, 1856, 1859, 1861,
-     1864, 1867, 1865, 1869, 1872, 1870, 6947, 1877, 1878, 1871,
+     1864, 1867, 1865, 1869, 1872, 1870, 6961, 1877, 1878, 1871,
      1879, 1881, 1882, 1883, 1891, 1892, 1893, 1894, 1904, 1896,
-     1899, 1897, 1901, 1906, 1908, 1909, 1911, 6947, 1916, 1924,
+     1899, 1897, 1901, 1906, 1908, 1909, 1911, 6961, 1916, 1924,
      1913, 1921, 1919, 1925, 1928, 1929, 1930, 1933, 1931, 1935,
      1937, 1938, 1947, 1943, 1944, 1946, 1949, 1953, 1958, 1961,
      1959, 1960, 1971, 1963, 1966, 1972, 1974, 1975, 1976, 1977,
@@ -902,697 +903,699 @@ static const flex_int16_t yy_base[3576] =
      1978, 1980, 1985, 1990, 1987, 1995, 1988, 1991, 1998, 2009,
      2004, 1993, 2005, 2010, 2006, 2013, 2022, 2024, 2020, 2019,
      2021, 2032, 2028, 2030, 2031, 2033, 2036, 2041, 2042, 2043,
-     2044, 2046, 2050, 2051, 2053, 6947, 2055, 2059, 6947, 2058,
+     2044, 2046, 2050, 2051, 2053, 6961, 2055, 2059, 6961, 2058,
      2060, 2061, 2083, 2062, 2065, 2066, 2075, 2064, 2087, 2078,
      2076, 2095, 2084, 2102, 2097, 2103, 2105, 2107, 2108, 2112,
      2110, 2111, 2114, 2116, 2118, 2120, 2128, 2137, 2138, 2140,
      2134, 2142, 2119, 2143, 2067, 2163, 2144, 2145, 2146, 2147,
      2148, 2152, 2153, 2151, 2154, 2155, 2165, 2170, 2172, 2173,
-     2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6947, 2200,
+     2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6961, 2200,
 
-     2193, 2197, 2201, 2202, 2209, 2207, 2204, 6947, 2208, 2210,
+     2193, 2197, 2201, 2202, 2209, 2207, 2204, 6961, 2208, 2210,
      2211, 2220, 2213, 2218, 2221, 2224, 2225, 2228, 2229, 2231,
-     2233, 2230, 2232, 2251, 6947, 2234, 6947, 2238, 2235, 2253,
-     2243, 2246, 2247, 2254, 2256, 2259, 6947, 6947, 2263, 2257,
-     2270, 2273, 2278, 2274, 2275, 2276, 6947, 2277, 2285, 6947,
+     2233, 2230, 2232, 2251, 6961, 2234, 6961, 2238, 2235, 2253,
+     2243, 2246, 2247, 2254, 2256, 2259, 6961, 6961, 2263, 2257,
+     2270, 2273, 2278, 2274, 2275, 2276, 6961, 2277, 2285, 6961,
      2287, 2292, 2280, 2281, 2282, 2286, 2296, 2297, 2305, 2300,
-     2308, 2303, 2306, 2307, 6947, 2313, 2316, 2310, 2317, 2323,
-     2324, 2325, 2327, 2330, 2326, 6947, 2333, 2329, 2336, 2343,
+     2308, 2303, 2306, 2307, 6961, 2313, 2316, 2310, 2317, 2323,
+     2324, 2325, 2327, 2330, 2326, 6961, 2333, 2329, 2336, 2343,
      2347, 2341, 2344, 2348, 2352, 2349, 2354, 2355, 2356, 2357,
-     2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6947, 2381,
+     2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6961, 2381,
 
      2380, 2382, 2390, 2387, 2389, 2391, 2394, 2393, 2395, 2396,
      2401, 2397, 2405, 2406, 2407, 2409, 2418, 2421, 2416, 2417,
      2426, 2413, 2420, 2423, 2427, 2365, 2429, 2430, 2433, 2436,
-     6947, 2437, 2441, 2438, 2443, 2444, 2442,  171, 2450, 2451,
+     6961, 2437, 2441, 2438, 2443, 2444, 2442,  171, 2450, 2451,
      2453, 2454, 2458, 2469, 2455, 2463, 2476, 2471, 2472, 2478,
-     2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6947,
-     2491, 2497, 2494, 2498, 2501, 2502, 2504, 6947, 2506, 2514,
+     2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6961,
+     2491, 2497, 2494, 2498, 2501, 2502, 2504, 6961, 2506, 2514,
      2516, 2525, 2519, 2503, 2527, 2528, 2531, 2529, 2532, 2533,
-     2534, 2535, 2536, 2542, 2539, 6947, 2544, 2551, 2554, 2541,
+     2534, 2535, 2536, 2542, 2539, 6961, 2544, 2551, 2554, 2541,
      2555, 2562, 2548, 2563, 2564, 2565, 2568, 2567, 2569, 2573,
 
      2570, 2572, 2574, 2575, 2583, 2594, 2577, 2586, 2587, 2590,
-     2591, 2595, 2599, 2600, 2601, 2608, 2603, 6947, 2615, 2604,
+     2591, 2595, 2599, 2600, 2601, 2608, 2603, 6961, 2615, 2604,
      2612, 2613, 2611, 2614, 2617, 2620, 2634, 2624, 2627, 2629,
      2635, 2644, 2637, 2638, 2646, 2654, 2651, 2639, 2664, 2660,
      2661, 2668, 2659, 2670, 2672, 2662, 2673, 2684, 2674, 2676,
      2681, 2679, 2685, 2694, 2695, 2687, 2697, 2698, 2690, 2700,
-     2702, 2712, 2717, 2707, 6947, 2719, 2709, 2720, 2721, 2728,
+     2702, 2712, 2717, 2707, 6961, 2719, 2709, 2720, 2721, 2728,
      2725, 2726, 2731, 2729, 2732, 2733, 2735, 2737, 2745, 2746,
      2744, 2742, 2749, 2753, 2755, 2757, 2760, 2759, 2740, 2768,
-     2762, 2764, 2771, 2772, 6947, 2775, 2776, 2780, 2782, 2784,
+     2762, 2764, 2771, 2772, 6961, 2775, 2776, 2780, 2782, 2784,
 
      2785, 2787, 2788, 2790, 2792, 2793, 2794, 2797, 2798, 2800,
-     2801, 2802, 2809, 2806, 2807, 2808, 2812, 6947, 2820, 2819,
+     2801, 2802, 2809, 2806, 2807, 2808, 2812, 6961, 2820, 2819,
      2821, 2824, 2827, 2825, 2831, 2837, 2839, 2828, 2841, 2835,
-     2842, 2843, 2845, 6947, 2855, 2857, 2847, 2854, 2862, 2860,
-     2861, 2863, 2865, 2866, 6947, 2867, 2870, 2868, 2875, 2871,
-     2873, 2882, 2883, 2879, 6947, 2887, 2884, 2889, 2892, 2893,
+     2842, 2843, 2845, 6961, 2855, 2857, 2847, 2854, 2862, 2860,
+     2861, 2863, 2865, 2866, 6961, 2867, 2870, 2868, 2875, 2871,
+     2873, 2882, 2883, 2879, 6961, 2887, 2884, 2889, 2892, 2893,
      2894, 2895, 2899, 2897, 2901, 2902, 2906, 2915, 2907, 2916,
-     6947, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933,
-     2935, 2937, 2940, 6947, 2942, 2945, 2948, 2957, 2952, 2953,
-     2955, 2958, 2960, 2962, 2961, 2964, 2966, 6947, 2968, 2967,
+     6961, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933,
+     2935, 2937, 2940, 6961, 2942, 2945, 2948, 2957, 2952, 2953,
+     2955, 2958, 2960, 2962, 2961, 2964, 2966, 6961, 2968, 2967,
 
      2970, 2974, 2972, 2977, 2978, 2989, 2984, 2987, 2990, 2991,
      2992, 2993, 2994, 2999, 3010, 3001, 2998, 3000, 3002, 3014,
      3012, 3019, 3018, 3022, 3026, 3030, 3025, 3031, 3034, 3029,
-     3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6947, 3056,
+     3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6961, 3056,
      3057, 3059, 3044, 3060, 3063, 3064, 3066, 3069, 3065, 3067,
      3071, 3074, 3078, 3087, 3090, 3080, 3082, 3091, 3092, 3093,
      3094, 3095, 3096, 3101, 3104, 3103, 3105, 3106, 3113, 3109,
      3112, 3121, 3117, 3120, 3122, 3123, 3124, 3126, 3127, 3129,
      3130, 3134, 3133, 3135, 3138, 3146, 3156, 3153, 3147, 3149,
-     3157, 3159, 3161, 6947, 3160, 3164, 3168, 3165, 3170, 3174,
+     3157, 3159, 3161, 6961, 3160, 3164, 3168, 3165, 3170, 3174,
 
      3171, 3181, 3177, 3182, 3190, 3188, 3187, 3194, 3179, 3189,
-     3196, 3197, 3206, 3202, 6947, 3203, 6947, 3204, 3208, 3209,
-     3218, 3211, 6947, 3215, 6947, 3216, 3223, 3220, 3224, 3226,
-     6947, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241,
+     3196, 3197, 3206, 3202, 6961, 3203, 6961, 3204, 3208, 3209,
+     3218, 3211, 6961, 3215, 6961, 3216, 3223, 3220, 3224, 3226,
+     6961, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241,
      3243, 3245, 3246, 3255, 3244, 3250, 3251, 3257, 3266, 3256,
      3261, 3263, 3269, 3272, 3274, 3273, 3280, 3275, 3282, 3283,
-     3285, 3286, 3287, 6947, 3291, 3295, 3296, 3299, 3300, 3288,
+     3285, 3286, 3287, 6961, 3291, 3295, 3296, 3299, 3300, 3288,
      3303, 3302, 3310, 3307, 3311, 3308, 3314, 3315, 3319, 3320,
-     3323, 3325, 3331, 3336, 3343, 3326, 3344, 6947, 3339, 3348,
-     3330, 3350, 6947, 3352, 3327, 3354, 3358, 3360, 3361, 3362,
+     3323, 3325, 3331, 3336, 3343, 3326, 3344, 6961, 3339, 3348,
+     3330, 3350, 6961, 3352, 3327, 3354, 3358, 3360, 3361, 3362,
 
-     3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6947,
+     3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6961,
      3382, 3390, 3371, 3394, 3393, 3404, 3405, 3401, 3407, 3409,
      3417, 3413, 3402, 3412, 3400, 3414, 3420, 3422, 3427, 3431,
      3424, 3432, 3428, 3433, 3436, 3437, 3439, 3440, 3443, 3441,
-     3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6947,
-     3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6947,
+     3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6961,
+     3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6961,
      3480, 3482, 3483, 3484, 3485, 3489, 3492, 3490, 3493, 3494,
-     3497, 3498, 3501, 3500, 6947, 3507, 6947, 3508, 3515, 3520,
+     3497, 3498, 3501, 3500, 6961, 3507, 6961, 3508, 3515, 3520,
      3524, 3509, 3517, 3525, 3530, 3526, 3531, 3532, 3538, 3540,
      3534, 3536, 3542, 3543, 3546, 3547, 3554, 3560, 3557, 3549,
 
-     3561, 3563, 3565, 3566, 3573, 3570, 3568, 6947, 6947, 3571,
+     3561, 3563, 3565, 3566, 3573, 3570, 3568, 6961, 6961, 3571,
      3576, 3577, 3583, 3584, 3585, 3587, 3589, 3592, 3591, 3595,
-     3600, 3611, 6947, 3603, 3604, 3606, 3607, 3608, 3620, 3613,
-     3624, 3621, 3625, 3626, 3633, 3629, 6947, 3632, 3634, 3642,
-     3637, 3638, 3645, 6947, 3375, 6947, 3643, 3644, 3646, 3649,
+     3600, 3611, 6961, 3603, 3604, 3606, 3607, 3608, 3620, 3613,
+     3624, 3621, 3625, 3626, 3633, 3629, 6961, 3632, 3634, 3642,
+     3637, 3638, 3645, 6961, 3375, 6961, 3643, 3644, 3646, 3649,
      3651, 3655, 3653, 3658, 3659, 3654, 3660, 3670, 3677, 3679,
      3675, 3681, 3676, 3682, 3678, 3684, 3685, 3692, 3687, 3689,
-     3690, 6947, 3694, 3695, 3699, 3701, 3702, 3707, 3711, 3704,
-     3710, 6947, 3714, 3717, 3718, 3719, 3720, 3724, 3727, 3728,
-     3729, 3737, 3730, 3732, 3738, 3741, 6947, 3742, 3734, 3749,
+     3690, 6961, 3694, 3695, 3699, 3701, 3702, 3707, 3711, 3704,
+     3710, 6961, 3714, 3717, 3718, 3719, 3720, 3724, 3727, 3728,
+     3729, 3737, 3730, 3732, 3738, 3741, 6961, 3742, 3734, 3749,
 
-     3745, 3747, 3752, 3756, 3759, 3764, 6947, 3766, 3751, 3773,
+     3745, 3747, 3752, 3756, 3759, 3764, 6961, 3766, 3751, 3773,
      3769, 3770, 3772, 3775, 3776, 3777, 3779, 3780, 3781, 3783,
      3784, 3789, 3785, 3787, 3794, 3790, 3802, 3804, 3791, 3812,
-     3819, 3805, 6947, 3808, 3815, 3817, 3818, 3820, 3821, 3823,
+     3819, 3805, 6961, 3808, 3815, 3817, 3818, 3820, 3821, 3823,
      3829, 3831, 3825, 3840, 3841, 3832, 3836, 3843, 3847, 3844,
-     3855, 3851, 6947, 3856, 3852, 3865, 3858, 3860, 3866, 3862,
+     3855, 3851, 6961, 3856, 3852, 3865, 3858, 3860, 3866, 3862,
      3867, 3868, 3872, 3874, 3875, 3876, 3877, 3878, 3883, 3886,
-     3890, 3891, 3892, 3893, 3900, 3895, 6947, 3907, 3884, 3897,
+     3890, 3891, 3892, 3893, 3900, 3895, 6961, 3907, 3884, 3897,
      3914, 3908, 3905, 3923, 3918, 3921, 3922, 3925, 3926, 3928,
-     3930, 3931, 3932, 3935, 3936, 6947, 6947, 3938, 3939, 3940,
+     3930, 3931, 3932, 3935, 3936, 6961, 6961, 3938, 3939, 3940,
 
-     6947, 3942, 3944, 3954, 3945, 3947, 3955, 3957, 3959, 3958,
-     3960, 3962, 3968, 3969, 6947, 3977, 3970, 3979, 3978, 3974,
-     3988, 3987, 6947, 3980, 3990, 3992, 3995, 3993, 3983, 3996,
+     6961, 3942, 3944, 3954, 3945, 3947, 3955, 3957, 3959, 3958,
+     3960, 3962, 3968, 3969, 6961, 3977, 3970, 3979, 3978, 3974,
+     3988, 3987, 6961, 3980, 3990, 3992, 3995, 3993, 3983, 3996,
      4001, 3997, 4005, 4006, 4007, 4010, 4018, 4019, 4014, 4016,
-     4017, 6947, 4020, 4022, 4023, 4026, 4027, 4029, 4030, 6947,
+     4017, 6961, 4020, 4022, 4023, 4026, 4027, 4029, 4030, 6961,
      4035, 4032, 4038, 4041, 4043, 4050, 4042, 4053, 4056, 4057,
      4058, 4060, 4061, 4062, 4063, 4065, 4073, 4059, 4071, 4070,
-     4068, 4088, 4089, 4076, 6947, 4084, 4091, 4074, 4096, 6947,
-     4098, 4105, 4106, 6947, 4109, 4092, 4108, 4110, 4117, 6947,
+     4068, 4088, 4089, 4076, 6961, 4084, 4091, 4074, 4096, 6961,
+     4098, 4105, 4106, 6961, 4109, 4092, 4108, 4110, 4117, 6961,
      4112, 4115, 4114, 4120, 4116, 4129, 4125, 4133, 4131, 4132,
 
-     4128, 4134, 4137, 6947, 4138, 4135, 4140, 6947, 4143, 4152,
-     4156, 4158, 4142, 4165, 4160, 4163, 4161, 4164, 6947, 4169,
-     6947, 4172, 4170, 4176, 6947, 4171, 4178, 4179, 4181, 4185,
+     4128, 4134, 4137, 6961, 4138, 4135, 4140, 6961, 4143, 4152,
+     4156, 4158, 4142, 4165, 4160, 4163, 4161, 4164, 6961, 4169,
+     6961, 4172, 4170, 4176, 6961, 4171, 4178, 4179, 4181, 4185,
      4186, 4187, 4193, 4189, 4195, 4197, 4198, 4199, 4200, 4202,
-     4209, 4201, 4205, 4208, 4210, 6947, 4211, 4213, 4220, 4217,
-     4221, 4225, 4227, 4228, 4230, 4232, 6947, 6947, 4241, 6947,
-     4233, 4238, 4242, 4243, 6947, 4246, 4248, 4250, 4247, 4251,
-     4253, 4256, 4266, 4136, 6947, 4268, 4269, 6947, 4257, 4271,
+     4209, 4201, 4205, 4208, 4210, 6961, 4211, 4213, 4220, 4217,
+     4221, 4225, 4227, 4228, 4230, 4232, 6961, 6961, 4241, 6961,
+     4233, 4238, 4242, 4243, 6961, 4246, 4248, 4250, 4247, 4251,
+     4253, 4256, 4266, 4136, 6961, 4268, 4269, 6961, 4257, 4271,
      4278, 4273, 4275, 4263, 4276, 4283, 4279, 4260, 4286, 4289,
-     4290, 4291, 4292, 4293, 4300, 6947, 4294, 4297, 4295, 4310,
+     4290, 4291, 4292, 4293, 4300, 6961, 4294, 4297, 4295, 4310,
 
-     4299, 4304, 4312, 4311, 4313, 6947, 4321, 4323, 4322, 4327,
-     4328, 6947, 4329, 6947, 4330, 4334, 4337, 4339, 4331, 4342,
-     6947, 4344, 4345, 4352, 4347, 4353, 4354, 4355, 4357, 4361,
-     4363, 4364, 4371, 4367, 4369, 4366, 4376, 4377, 6947, 4368,
+     4299, 4304, 4312, 4311, 4313, 6961, 4321, 4323, 4322, 4327,
+     4328, 6961, 4329, 6961, 4330, 4334, 4337, 4339, 4331, 4342,
+     6961, 4344, 4345, 4352, 4347, 4353, 4354, 4355, 4357, 4361,
+     4363, 4364, 4371, 4367, 4369, 4366, 4376, 4377, 6961, 4368,
      4374, 4390, 4391, 4383, 4380, 4386, 4399, 4396, 4398, 4397,
-     4402, 4404, 4405, 4407, 4411, 4413, 4409, 4416, 6947, 4419,
-     4420, 4424, 4421, 4431, 4427, 4428, 4433, 6947, 4435, 4436,
-     4438, 6947, 4440, 4444, 4446, 4449, 4450, 4451, 4452, 4456,
-     4454, 4457, 4458, 4460, 6947, 4462, 4463, 4461, 4477, 4478,
-     4467, 6947, 6947, 4480, 6947, 4484, 4466, 4485, 4487, 4488,
-
-     4492, 4494, 4495, 4497, 4491, 4498, 4502, 4503, 4507, 6947,
-     4510, 4518, 4511, 4522, 4525, 4530, 4523, 4527, 4514, 6947,
-     6947, 4532, 4536, 4538, 4540, 4541, 4543, 4528, 4550, 4548,
-     4556, 4559, 4549, 4566, 6947, 4561, 4552, 4563, 4564, 6947,
+     4402, 4404, 4405, 4407, 4411, 4413, 4409, 4416, 6961, 4419,
+     4420, 4424, 4421, 4431, 4427, 4428, 4433, 6961, 4435, 4436,
+     4438, 6961, 4440, 4444, 4446, 4449, 4450, 4451, 4452, 4456,
+     4454, 4457, 4458, 4460, 6961, 4462, 4463, 4461, 4477, 4478,
+     4467, 6961, 6961, 4480, 6961, 4484, 4466, 4485, 4487, 4488,
+
+     4492, 4494, 4495, 4497, 4491, 4498, 4502, 4503, 4507, 6961,
+     4510, 4518, 4511, 4522, 4525, 4530, 4523, 4527, 4514, 6961,
+     6961, 4532, 4536, 4538, 4540, 4541, 4543, 4528, 4550, 4548,
+     4556, 4559, 4549, 4566, 6961, 4561, 4552, 4563, 4564, 6961,
      4545, 4568, 4569, 4571, 4574, 4575, 4578, 4576, 4577, 4580,
      4588, 4581, 4583, 4590, 4589, 4591, 4599, 4597, 4600, 4601,
-     4603, 4607, 6947, 4604, 4608, 4610, 4613, 4617, 4618, 4619,
-     4620, 4622, 4623, 4630, 6947, 4628, 6947, 4626, 4631, 4646,
+     4603, 4607, 6961, 4604, 4608, 4610, 4613, 4617, 4618, 4619,
+     4620, 4622, 4623, 4630, 6961, 4628, 6961, 4626, 4631, 4646,
      4633, 4636, 4648, 4649, 4650, 4651, 4655, 4657, 4658, 4661,
      4663, 4667, 4662, 4668, 4671, 4673, 4675, 4679, 4683, 4680,
 
-     6947, 4686, 4676, 4688, 4625, 4690, 4693, 4694, 4698, 4699,
+     6961, 4686, 4676, 4688, 4625, 4690, 4693, 4694, 4698, 4699,
      4701, 4695, 4702, 4704, 4706, 4709, 4711, 4712, 4714, 4715,
-     6947, 4716, 4719, 4722, 4725, 4726, 4727, 4730, 4735, 4739,
-     4743, 4731, 4733, 4745, 6947, 4737, 4746, 4754, 6947, 4749,
-     4751, 4756, 4757, 4758, 4760, 4761, 4763, 4767, 4770, 6947,
+     6961, 4716, 4719, 4722, 4725, 4726, 4727, 4730, 4735, 4739,
+     4743, 4731, 4733, 4745, 6961, 4737, 4746, 4754, 6961, 4749,
+     4751, 4756, 4757, 4758, 4760, 4761, 4763, 4767, 4770, 6961,
      4774, 4764, 4771, 4775, 4776, 4777, 4781, 4783, 4786, 4788,
-     4790, 4798, 6947, 4799, 4791, 4800, 4802, 4804, 4806, 4810,
-     4808, 4811, 6947, 4812, 4815, 4821, 4823, 4828, 4830, 4814,
+     4790, 4798, 6961, 4799, 4791, 4800, 4802, 4804, 4806, 4810,
+     4808, 4811, 6961, 4812, 4815, 4821, 4823, 4828, 4830, 4814,
      4825, 4833, 4834, 4836, 4832, 4842, 4843, 4844, 4845, 4847,
-     4849, 4848, 4865, 4866, 4863, 6947, 4850, 6947, 4851, 4852,
+     4849, 4848, 4865, 4866, 4863, 6961, 4850, 6961, 4851, 4852,
 
-     4868, 4878, 4873, 4875, 4876, 4880, 4879, 6947, 4881, 4886,
-     4888, 4883, 4891, 6947, 4892, 4889, 4893, 4894, 6947, 4907,
-     4890, 4896, 4903, 4912, 4913, 6947, 4918, 4919, 4920, 4927,
+     4868, 4878, 4873, 4875, 4876, 4880, 4879, 6961, 4881, 4886,
+     4888, 4883, 4891, 6961, 4892, 4889, 4893, 4894, 6961, 4907,
+     4890, 4896, 4903, 4912, 4913, 6961, 4918, 4919, 4920, 4927,
      4929, 4924, 4931, 4926, 4934, 4932, 4928, 4936, 4937, 4945,
-     4943, 4941, 6947, 4947, 4949, 4954, 4956, 4950, 4958, 4948,
-     4960, 4963, 4965, 6947, 4966, 4969, 4970, 4972, 4973, 4975,
+     4943, 4941, 6961, 4947, 4949, 4954, 4956, 4950, 4958, 4948,
+     4960, 4963, 4965, 6961, 4966, 4969, 4970, 4972, 4973, 4975,
      4974, 4976, 4983, 4980, 4984, 4982, 4988, 4991, 4993, 4995,
-     4997, 6947, 4999, 5001, 5003, 5012, 5005, 5002, 6947, 5009,
-     6947, 5014, 5019, 5021, 5022, 5015, 5026, 6947, 6947, 5029,
-     5036, 5023, 5032, 5034, 6947, 6947, 5038, 6947, 5039, 6947,
-
-     5040, 5042, 6947, 6947, 5044, 5045, 5046, 5047, 5048, 5051,
-     6947, 5056, 6947, 5065, 5060, 5061, 5063, 5064, 5068, 6947,
-     5066, 5069, 5070, 5075, 5077, 6947, 5074, 5078, 5094, 5081,
-     5089, 6947, 5091, 5092, 5093, 5096, 6947, 5097, 5101, 5102,
+     4997, 6961, 4999, 5001, 5003, 5012, 5005, 5002, 6961, 5009,
+     6961, 5014, 5019, 5021, 5022, 5015, 5026, 6961, 6961, 5029,
+     5036, 5023, 5032, 5034, 6961, 6961, 5038, 6961, 5039, 6961,
+
+     5040, 5042, 6961, 6961, 5044, 5045, 5046, 5047, 5048, 5051,
+     6961, 5056, 6961, 5065, 5060, 5061, 5063, 5064, 5068, 6961,
+     5066, 5069, 5070, 5075, 5077, 6961, 5074, 5078, 5094, 5081,
+     5089, 6961, 5091, 5092, 5093, 5096, 6961, 5097, 5101, 5102,
      5103, 5106, 5105, 5108, 5109, 5110, 5116, 5117, 5120, 5119,
      5122, 5123, 5127, 5132, 5134, 5136, 5137, 5138, 5140, 5143,
      5146, 5150, 5141, 5148, 5152, 5154, 5155, 5157, 5159, 5160,
      5162, 5166, 5167, 5163, 5170, 5169, 5171, 5180, 5172, 5182,
      5184, 5186, 5188, 5189, 5190, 5193, 5194, 5197, 5198, 5199,
-     5196, 5203, 5200, 5207, 5212, 6947, 5205, 5213, 5214, 5216,
+     5196, 5203, 5200, 5207, 5212, 6961, 5205, 5213, 5214, 5216,
 
-     5217, 5221, 5224, 5233, 5239, 5240, 6947, 5242, 6947, 5244,
-     5228, 5225, 5230, 5247, 6947, 5234, 5248, 5250, 5251, 5252,
-     5253, 5255, 5256, 5259, 5260, 5263, 6947, 5268, 5265, 5258,
-     5274, 5270, 6947, 5275, 5282, 5285, 5286, 5287, 5288, 5291,
+     5217, 5221, 5224, 5233, 5239, 5240, 6961, 5242, 6961, 5244,
+     5228, 5225, 5230, 5247, 6961, 5234, 5248, 5250, 5251, 5252,
+     5253, 5255, 5256, 5259, 5260, 5263, 6961, 5268, 5265, 5258,
+     5274, 5270, 6961, 5275, 5282, 5285, 5286, 5287, 5288, 5291,
      5289, 5290, 5293, 5292, 5294, 5297, 5299, 5300, 5310, 5312,
-     6947, 5314, 5316, 5323, 5319, 5321, 5322, 5324, 5325, 5326,
-     5329, 5327, 5334, 5331, 5343, 5348, 5345, 6947, 5332, 6947,
-     5349, 5335, 5352, 5353, 5355, 5356, 5357, 5359, 6947, 6947,
+     6961, 5314, 5316, 5323, 5319, 5321, 5322, 5324, 5325, 5326,
+     5329, 5327, 5334, 5331, 5343, 5348, 5345, 6961, 5332, 6961,
+     5349, 5335, 5352, 5353, 5355, 5356, 5357, 5359, 6961, 6961,
      5362, 5363, 5365, 5367, 5369, 5370, 5372, 5374, 5375, 5376,
-     6947, 5379, 5383, 5387, 5393, 5386, 6947, 5395, 5396, 5397,
+     6961, 5379, 5383, 5387, 5393, 5386, 6961, 5395, 5396, 5397,
 
-     5401, 6947, 5402, 5398, 5404, 5405, 5412, 5403, 5419, 5415,
-     5421, 5409, 5423, 5413, 5427, 6947, 6947, 6947, 6947, 5428,
+     5401, 6961, 5402, 5398, 5404, 5405, 5412, 5403, 5419, 5415,
+     5421, 5409, 5423, 5413, 5427, 6961, 6961, 6961, 6961, 5428,
      5424, 5432, 5434, 5436, 5437, 5439, 5442, 5443, 5441, 5438,
-     5444, 6947, 5454, 6947, 6947, 5455, 5456, 5457, 5462, 5464,
-     5463, 5465, 5468, 6947, 5466, 6947, 5470, 5473, 5469, 5480,
+     5444, 6961, 5454, 6961, 6961, 5455, 5456, 5457, 5462, 5464,
+     5463, 5465, 5468, 6961, 5466, 6961, 5470, 5473, 5469, 5480,
      5486, 5483, 5477, 5490, 5487, 5492, 5491, 5493, 5501, 5498,
-     5499, 5502, 5505, 5507, 5513, 6947, 6947, 5508, 5515, 5516,
+     5499, 5502, 5505, 5507, 5513, 6961, 6961, 5508, 5515, 5516,
      5524, 5520, 5522, 5526, 5534, 5529, 5530, 5532, 5531, 5536,
-     5537, 5545, 5548, 5538, 5547, 6947, 5549, 5550, 5551, 6947,
-     5552, 6947, 5557, 5560, 5561, 5553, 5563, 5568, 5569, 5572,
+     5537, 5545, 5548, 5538, 5547, 6961, 5549, 5550, 5551, 6961,
+     5552, 6961, 5557, 5560, 5561, 5553, 5563, 5568, 5569, 5572,
 
-     5570, 5575, 6947, 6947, 5567, 5587, 5582, 6947, 6947, 5574,
+     5570, 5575, 6961, 6961, 5567, 5587, 5582, 6961, 6961, 5574,
      5583, 5586, 5590, 5584, 5592, 5595, 5594, 5597, 5599, 5596,
-     6947, 5601, 6947, 5600, 5602, 5608, 5610, 5619, 5623, 5614,
-     5624, 5622, 5625, 5626, 5629, 6947, 5627, 5628, 6947, 5637,
-     5639, 5640, 5638, 5646, 5643, 6947, 5647, 5649, 5654, 5656,
-     6947, 5660, 5657, 5663, 5662, 6947, 5665, 6947, 5630, 5669,
-     5666, 5676, 5672, 6947, 5673, 5679, 6947, 5682, 5686, 5688,
-     5689, 5677, 5683, 6947, 5695, 5691, 6947, 5697, 5699, 5700,
-     5703, 5704, 5706, 5707, 5708, 5710, 5718, 5714, 5711, 6947,
-     6947, 5722, 5723,  135, 5731, 5721, 5727, 5729, 5732, 5739,
-
-     5734, 5736, 5742, 6947, 6947, 5743, 6947, 5737, 5750, 6947,
+     6961, 5601, 6961, 5600, 5602, 5608, 5610, 5619, 5623, 5614,
+     5624, 5622, 5625, 5626, 5629, 6961, 5627, 5628, 6961, 5637,
+     5639, 5640, 5638, 5646, 5643, 6961, 5647, 5649, 5654, 5656,
+     6961, 5660, 5657, 5663, 5662, 6961, 5665, 6961, 5630, 5669,
+     5666, 5676, 5672, 6961, 5673, 5679, 6961, 5682, 5686, 5688,
+     5689, 5677, 5683, 6961, 5695, 5691, 6961, 5697, 5699, 5700,
+     5703, 5704, 5706, 5707, 5708, 5710, 5718, 5714, 5711, 6961,
+     6961, 5722, 5723,  135, 5731, 5721, 5727, 5729, 5732, 5739,
+
+     5734, 5736, 5742, 6961, 6961, 5743, 6961, 5737, 5750, 6961,
      5735, 5751, 5755, 5746, 5752, 5758, 5761, 5765, 5767, 5768,
      5769, 5770, 5771, 5775, 5792, 5794, 5777, 5774, 5797, 5799,
      5801, 5803, 5805, 5762, 5807, 5789, 5785, 5808, 5810, 5795,
-     5813, 5816, 5817, 5819, 6947, 5821, 5824, 5826, 5827, 5828,
-     6947, 5831, 5834, 5836, 5838, 6947, 5845, 5840, 5842, 5847,
-     5848, 6947, 5832, 5853, 5855, 5858, 5859, 5860, 5861, 5863,
-     5870, 6947, 5867, 5865, 5871, 6947, 6947, 6947, 5876, 5883,
-     5873, 6947, 5885, 5877, 5886, 5888, 6947, 5890, 5892, 5893,
-     6947, 6947, 6947, 5894, 5895, 5898, 6947, 5896, 5903, 6947,
-
-     5902, 6947, 5899, 6947, 5904, 5908, 5917, 5912, 6947, 5910,
-     5922, 5923, 5924, 6947, 5927, 5930, 5932, 5933, 5934, 5936,
-     5938, 6947, 5945, 5941, 5944, 5948, 5940, 5950, 5951, 5952,
-     5953, 5965, 5956, 5961, 6947, 5963, 5964, 5968, 5974, 5966,
-     5976, 5977, 6947, 5970, 6947, 5979, 6947, 5980, 5982, 5983,
+     5813, 5816, 5817, 5819, 6961, 5821, 5824, 5826, 5827, 5828,
+     6961, 5831, 5834, 5836, 5838, 6961, 5845, 5840, 5842, 5847,
+     5848, 6961, 5832, 5853, 5855, 5858, 5859, 5860, 5861, 5863,
+     5870, 6961, 5867, 5865, 5871, 6961, 6961, 6961, 5876, 5883,
+     5873, 6961, 5885, 5877, 5886, 5888, 6961, 5890, 5892, 5893,
+     6961, 6961, 6961, 5894, 5895, 5898, 6961, 5896, 5903, 6961,
+
+     5902, 6961, 5899, 6961, 5904, 5908, 5917, 5912, 6961, 5910,
+     5922, 5923, 5924, 6961, 5927, 5930, 5932, 5933, 5934, 5936,
+     5938, 6961, 5945, 5941, 5944, 5948, 5940, 5950, 5951, 5952,
+     5953, 5965, 5956, 5961, 6961, 5963, 5964, 5968, 5974, 5966,
+     5976, 5977, 6961, 5970, 6961, 5979, 6961, 5980, 5982, 5983,
      5984, 5989, 5986, 5987, 5997, 5994, 6000, 6003, 6001, 6007,
-     6008, 6012, 6009, 6947, 6947, 6014, 6015, 6017, 6947, 6018,
-     6947, 6023, 6947, 6019, 6024, 6026, 6027, 6032, 6947, 6947,
-     6030, 6033, 6036, 6044, 6041, 6042, 6947, 6046, 6048, 6049,
-     6051, 6947, 6058, 6947, 6054, 6063, 6055, 6947, 6056, 6066,
-
-     6070, 6067, 6059, 6072, 6073, 6076, 6075, 6083, 6080, 6081,
-     6086, 6088, 6089, 6094, 6098, 6102, 6947, 6947, 6947, 6096,
-     6090, 6111, 6113, 6114, 6115, 6100, 6947, 6116, 6120, 6122,
-     6107, 6129, 6124, 6131, 6947, 6125, 6128, 6132, 6134, 6136,
-     6133, 6138, 6139, 6947, 6144, 6150, 6156, 6140, 6151, 6153,
-     6160, 6162, 6164, 6167, 6168, 6169, 6176, 6172, 6947, 6174,
-     6947, 6179, 6947, 6171, 6947, 6175, 6180, 6182, 6183, 6184,
-     6947, 6187, 6188, 6189, 6192, 6191, 6194, 6199, 6210, 6947,
-     6200, 6213, 6196, 6193, 6215, 6947, 6947, 6204, 6222, 6947,
-     6224, 6226, 6219, 6234, 6217, 6227, 6237, 6238, 6947, 6240,
-
-     6241, 6230, 6232, 6242, 6239, 6248, 6947, 6245, 6249, 6255,
-     6256, 6947, 6259, 6257, 6261, 6260, 6258, 6947, 6262, 6264,
-     6271, 6269, 6947, 6266, 6280, 6272, 6947, 6947, 6947, 6288,
-     6290, 6291, 6947, 6947, 6947, 6947, 6293, 6294, 6282, 6297,
-     6947, 6947, 6303, 6307, 6311, 6313, 6317, 6306, 6947, 6316,
-     6318, 6320, 6322, 6323, 6947, 6947, 6324, 6326, 6328, 6329,
-     6331, 6332, 6947, 6947, 6333, 6335, 6339, 6336, 6338, 6947,
-     6341, 6344, 6351, 6347, 6354, 6361, 6363, 6357, 6364, 6365,
-     6376, 6373, 6366, 6368, 6371, 6379, 6380, 6378, 6382, 6393,
-     6388, 6390, 6396, 6386, 6398, 6947, 6947, 6400, 6947, 6405,
-
-     6402, 6947, 6947, 6407, 6409, 6413, 6415, 6947, 6417, 6419,
-     6421, 6423, 6410, 6947, 6424, 6426, 6428, 6429, 6430, 6431,
-     6947, 6435, 6437, 6440, 6432, 6441, 6443, 6444, 6449, 6947,
-     6446, 6453, 6947, 6947, 6450, 6457, 6458, 6462, 6459, 6947,
-     6464, 6471, 6466, 6469, 6470, 6472, 6475, 6947, 6473, 6476,
-     6947, 6947, 6478, 6481, 6947, 6947, 6483, 6947, 6947, 6947,
-     6947, 6947, 6947, 6947, 6947, 6487, 6494, 6947, 6947, 6486,
-     6501, 6503, 6947, 6505, 6947, 6488, 6498, 6506, 6493, 6947,
-     6508, 6947, 6495, 6512, 6514, 6298, 6515, 6516, 6520, 6521,
-     6524, 6525, 6526, 6528, 6527, 6532, 6529, 6531, 6545, 6538,
-
-     6535, 6548, 6947, 6947, 6947, 6546, 6539, 6557, 6549, 6562,
-     6563, 6566, 6568, 6554, 6569, 6571, 6570, 6572, 6576, 6578,
-     6585, 6580, 6583, 6581, 6588, 6582, 6591, 6947, 6597, 6584,
-     6592, 6604, 6947, 6598, 6947, 6600, 6947, 6947, 6606, 6607,
-     6609, 6610, 6620, 6621, 6612, 6619, 6616, 6622, 6624, 6947,
-     6631, 6947, 6947, 6625, 6628, 6947, 6633, 6634, 6947, 6636,
-     6637, 6639, 6640, 6641, 6643, 6644, 6645, 6652, 6947, 6947,
-     6655, 6659, 6657, 6661, 6663, 6670, 6665, 6667, 6669, 6673,
-     6671, 6685, 6947, 6681, 6682, 6684, 6947, 6688, 6686, 6689,
-     6691, 6693, 6700, 6695, 6698, 6947, 6701, 6947, 6704, 6697,
-
-     6708, 6699, 6707, 6715, 6716, 6719, 6720, 6947, 6721, 6722,
-     6725, 6729, 6731, 6734, 6735, 6727, 6737, 6738, 6748, 6741,
-     6745, 6749, 6751, 6753, 6754, 6947, 6760, 6755, 6947, 6757,
-     6761, 6763, 6764, 6767, 6947, 6772, 6765, 6769, 6775, 6778,
-     6779, 6947, 6781, 6790, 6785, 6947, 6791, 6947, 6947, 6793,
-     6787, 6794, 6800, 6802, 6947, 6947, 6947, 6827, 6834, 6841,
-     6848, 6855, 6862, 6869,   88, 6876, 6883, 6890, 6897, 6904,
-     6911, 6918, 6925, 6932, 6939
+     6008, 6012, 6009, 6961, 6961, 6019, 6015, 6017, 6961, 6014,
+     6961, 6023, 6961, 6024, 6026, 6027, 6029, 6031, 6961, 6961,
+     6038, 6030, 6039, 6047, 6033, 6043, 6961, 6051, 6044, 6046,
+     6054, 6961, 6055, 6961, 6057, 6066, 6059, 6961, 6061, 6068,
+
+     6070, 6063, 6071, 6073, 6074, 6075, 6076, 6086, 6079, 6081,
+     6082, 6088, 6089, 6094, 6100, 6105, 6961, 6961, 6961, 6095,
+     6090, 6114, 6112, 6113, 6115, 6099, 6961, 6118, 6120, 6121,
+     6122, 6130, 6125, 6128, 6961, 6132, 6129, 6131, 6133, 6135,
+     6136, 6137, 6139, 6961, 6150, 6152, 6158, 6140, 6154, 6159,
+     6161, 6163, 6166, 6170, 6167, 6171, 6178, 6174, 6961, 6176,
+     6173, 6961, 6182, 6961, 6177, 6961, 6183, 6184, 6185, 6186,
+     6187, 6961, 6191, 6192, 6193, 6195, 6194, 6198, 6200, 6202,
+     6961, 6203, 6216, 6211, 6213, 6215, 6961, 6961, 6217, 6223,
+     6961, 6225, 6228, 6226, 6235, 6227, 6234, 6237, 6241, 6961,
+
+     6243, 6244, 6230, 6245, 6248, 6251, 6252, 6961, 6254, 6255,
+     6256, 6257, 6961, 6260, 6259, 6264, 6266, 6267, 6961, 6268,
+     6269, 6285, 6283, 6961, 6270, 6291, 6271, 6961, 6961, 6961,
+     6293, 6296, 6297, 6961, 6961, 6961, 6961, 6299, 6300, 6261,
+     6303, 6961, 6304, 6961, 6307, 6311, 6315, 6317, 6323, 6310,
+     6961, 6322, 6324, 6326, 6318, 6328, 6961, 6961, 6329, 6331,
+     6332, 6334, 6338, 6335, 6961, 6961, 6340, 6341, 6343, 6344,
+     6345, 6961, 6346, 6349, 6357, 6350, 6361, 6367, 6369, 6358,
+     6370, 6371, 6378, 6382, 6363, 6374, 6379, 6381, 6385, 6384,
+     6392, 6393, 6395, 6397, 6399, 6394, 6402, 6961, 6961, 6405,
+
+     6961, 6411, 6406, 6961, 6408, 6961, 6413, 6417, 6419, 6421,
+     6961, 6423, 6425, 6428, 6430, 6414, 6961, 6432, 6434, 6436,
+     6437, 6431, 6438, 6961, 6445, 6442, 6448, 6439, 6449, 6451,
+     6452, 6456, 6961, 6450, 6460, 6961, 6961, 6457, 6464, 6466,
+     6468, 6470, 6961, 6471, 6478, 6473, 6476, 6477, 6479, 6482,
+     6961, 6480, 6484, 6961, 6961, 6485, 6490, 6961, 6961, 6483,
+     6491, 6961, 6961, 6961, 6961, 6961, 6961, 6961, 6961, 6494,
+     6500, 6961, 6961, 6495, 6502, 6507, 6961, 6513, 6961, 6504,
+     6510, 6514, 6515, 6961, 6516, 6961, 6517, 6520, 6521, 6522,
+     6523, 6528, 6532, 6525, 6533, 6534, 6536, 6537, 6539, 6541,
+
+     6542, 6543, 6549, 6546, 6556, 6557, 6558, 6961, 6961, 6961,
+     6559, 6560, 6567, 6562, 6569, 6574, 6579, 6582, 6570, 6572,
+     6583, 6585, 6588, 6576, 6584, 6597, 6594, 6595, 6598, 6605,
+     6596, 6610, 6612, 6961, 6614, 6587, 6600, 6618, 6961, 6606,
+     6961, 6615, 6961, 6961, 6623, 6624, 6620, 6626, 6635, 6636,
+     6627, 6631, 6632, 6634, 6638, 6961, 6643, 6961, 6961, 6961,
+     6640, 6646, 6961, 6648, 6649, 6961, 6647, 6650, 6652, 6656,
+     6657, 6654, 6658, 6659, 6675, 6961, 6961, 6660, 6665, 6668,
+     6677, 6679, 6678, 6681, 6685, 6686, 6688, 6689, 6698, 6961,
+     6695, 6696, 6700, 6961, 6702, 6697, 6703, 6704, 6705, 6713,
+
+     6709, 6712, 6961, 6714, 6961, 6718, 6720, 6721, 6711, 6719,
+     6722, 6733, 6731, 6727, 6961, 6737, 6741, 6739, 6743, 6745,
+     6747, 6748, 6749, 6751, 6754, 6760, 6757, 6764, 6765, 6761,
+     6769, 6766, 6961, 6776, 6767, 6961, 6773, 6777, 6770, 6779,
+     6783, 6961, 6788, 6781, 6790, 6791, 6794, 6795, 6961, 6797,
+     6804, 6799, 6961, 6805, 6961, 6961, 6807, 6801, 6808, 6814,
+     6816, 6961, 6961, 6961, 6841, 6848, 6855, 6862, 6869, 6876,
+     6883,   88, 6890, 6897, 6904, 6911, 6918, 6925, 6932, 6939,
+     6946, 6953
     } ;
 
-static const flex_int16_t yy_def[3576] =
+static const flex_int16_t yy_def[3583] =
     {   0,
-     3557,    1, 3558, 3558, 3559, 3559, 3560, 3560, 3561, 3561,
-     3562, 3562, 3563, 3563, 3564, 3564, 3557, 3565, 3557, 3557,
-     3557, 3557, 3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3567, 3557, 3557, 3557,
-     3567, 3568, 3557, 3557, 3557, 3568, 3569, 3557, 3557, 3557,
-     3557, 3569, 3570, 3557, 3557, 3557, 3570, 3571, 3557, 3572,
-     3557, 3571, 3571, 3573, 3557, 3557, 3557, 3557, 3573, 3574,
-     3557, 3557, 3557, 3574, 3565, 3565, 3557, 3575, 3566, 3575,
-     3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3567,
-     3567, 3568, 3568, 3569, 3569, 3557, 3570, 3570, 3571, 3571,
-     3572, 3572, 3571, 3573, 3573, 3557, 3574, 3574, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3571, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557,
-     3557, 3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3571, 3571, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3571, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3571, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565,
-
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3571, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3571, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565,
-     3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3557,
-
-     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3571, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3557, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3557, 3557, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3557,
-
-     3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3565,
-     3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3557, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565,
-     3565, 3565, 3557, 3557, 3557, 3557, 3565, 3565, 3565, 3565,
-     3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565,
-
-     3565, 3557, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
-     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3557, 3557, 3565, 3565, 3557, 3557, 3565, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3565, 3565, 3557, 3557, 3565,
-     3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557,
-     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-
-     3565, 3565, 3557, 3557, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3557, 3565, 3557, 3565, 3557, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
-     3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565,
-
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
-     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
-     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
-     3565, 3557, 3565, 3565, 3565, 3557, 3565, 3557, 3557, 3565,
-     3565, 3565, 3565, 3565, 3557, 3557,    0, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557
+     3564,    1, 3565, 3565, 3566, 3566, 3567, 3567, 3568, 3568,
+     3569, 3569, 3570, 3570, 3571, 3571, 3564, 3572, 3564, 3564,
+     3564, 3564, 3573, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3574, 3564, 3564, 3564,
+     3574, 3575, 3564, 3564, 3564, 3575, 3576, 3564, 3564, 3564,
+     3564, 3576, 3577, 3564, 3564, 3564, 3577, 3578, 3564, 3579,
+     3564, 3578, 3578, 3580, 3564, 3564, 3564, 3564, 3580, 3581,
+     3564, 3564, 3564, 3581, 3572, 3572, 3564, 3582, 3573, 3582,
+     3573, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3574,
+     3574, 3575, 3575, 3576, 3576, 3564, 3577, 3577, 3578, 3578,
+     3579, 3579, 3578, 3580, 3580, 3564, 3581, 3581, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3578, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564,
+     3564, 3572, 3564, 3564, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3578, 3578, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3578, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3578, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3578, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
+
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3578, 3572, 3564, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3564, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3564,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3578, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572,
+     3572, 3572, 3572, 3572, 3564, 3564, 3572, 3564, 3572, 3564,
+
+     3572, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3578, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3564, 3564, 3572, 3572, 3572, 3564, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3564, 3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3564, 3564, 3572, 3564, 3572, 3572, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3564, 3564, 3564, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3564, 3564, 3564, 3572, 3572, 3572, 3564, 3572, 3572, 3564,
+
+     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3564, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3564, 3572,
+     3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3564, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3564, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564, 3564, 3564,
+     3572, 3572, 3572, 3564, 3564, 3564, 3564, 3572, 3572, 3572,
+     3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572,
+
+     3564, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3564, 3572, 3572, 3564, 3564, 3572, 3572, 3564, 3564, 3572,
+     3572, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3572,
+     3572, 3564, 3564, 3572, 3572, 3572, 3564, 3572, 3564, 3572,
+     3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572,
+     3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3564, 3564,
+     3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564,
+     3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572,
+
+     3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572,
+     3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, 3572,
+     3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572,
+     3572, 3572, 3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572,
+     3572, 3564, 3564,    0, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564
     } ;
 
-static const flex_int16_t yy_nxt[6988] =
+static const flex_int16_t yy_nxt[7002] =
     {   0,
        18,   19,   20,   21,   22,   23,   22,   18,   18,   18,
        18,   18,   22,   24,   25,   26,   27,   28,   29,   30,
@@ -1929,7 +1932,7 @@ static const flex_int16_t yy_nxt[6988] =
      1632, 1633, 1630,   86, 1640,   86, 1634,   86, 1641, 1638,
      1636,   86,   86, 1646, 1639,   86, 1645, 1647,   86,   86,
      1642, 1643,   86,   86,   86, 1649, 1650,   86, 1651,   86,
-       86, 1644, 1648,   86, 1655, 1656, 1657,   86, 1654, 3557,
+       86, 1644, 1648,   86, 1655, 1656, 1657,   86, 1654, 3564,
        86,   86,   86,   86, 1658, 1652,   86, 1659, 1660,   86,
        86, 1653,   86,   86, 1661, 1663,   86,   86,   86,   86,
        86, 1662,   86, 1668,   86, 1664, 1667,   86, 1670, 1671,
@@ -1974,7 +1977,7 @@ static const flex_int16_t yy_nxt[6988] =
        86, 1840, 1843,   86, 1847,   86, 1845,   86, 1848, 1850,
        86,   86, 1849, 1842,   86,   86,   86, 1844, 1853,   86,
        86, 1852,   86,   86,   86, 1854,   86,   86,   86,   86,
-       86,   86,   86,   86, 1851, 1864,   86,   86,   86, 3557,
+       86,   86,   86,   86, 1851, 1864,   86,   86,   86, 3564,
      1855, 1859, 1860, 1856, 1858, 1857, 1861, 1862, 1868,   86,
      1869,   86, 1866, 1871,   86, 1863, 1867, 1872,   86,   86,
        86,   86, 1877,   86, 1870,   86,   86,   86,   86, 1881,
@@ -1984,7 +1987,7 @@ static const flex_int16_t yy_nxt[6988] =
        86,   86,   86, 1889, 1885, 1887, 1890, 1884,   86, 1891,
        86, 1895, 1896,   86, 1898, 1892, 1897,   86,   86,   86,
      1893, 1900, 1901,   86,   86,   86, 1894,   86, 1899,   86,
-     1904,   86, 1902,   86, 1905,   86,   86, 3557, 1906,   86,
+     1904,   86, 1902,   86, 1905,   86,   86, 3564, 1906,   86,
        86, 1914,   86, 1903, 1909, 1908, 1907,   86, 1911, 1913,
        86, 1912, 1915,   86,   86, 1910,   86, 1916,   86,   86,
      1922,   86, 1917,   86,   86, 1923,   86, 1918, 1924,   86,
@@ -1997,7 +2000,7 @@ static const flex_int16_t yy_nxt[6988] =
      1954, 1945,   86, 1952, 1949,   86,   86,   86, 1955, 1958,
        86,   86, 1962, 1953, 1960,   86,   86,   86,   86,   86,
      1961, 1957,   86, 1959,   86, 1956,   86,   86,   86, 1968,
-     1967,   86,   86,   86, 3557, 1964, 1965, 1969, 1966, 1970,
+     1967,   86,   86,   86, 3564, 1964, 1965, 1969, 1966, 1970,
      1971, 1973, 1975,   86, 1977, 1972, 1978, 1974,   86,   86,
        86,   86,   86, 1980,   86,   86, 1984,   86,   86, 1986,
 
@@ -2012,7 +2015,7 @@ static const flex_int16_t yy_nxt[6988] =
      2024, 2025,   86,   86, 2022,   86,   86, 2027,   86,   86,
        86, 2028,   86,   86,   86, 2026,   86,   86,   86, 2033,
 
-       86, 2034,   86,   86,   86, 2038, 2035,   86, 3557, 2029,
+       86, 2034,   86,   86,   86, 2038, 2035,   86, 3564, 2029,
      2031, 2032, 2030, 2037, 2036,   86, 2039,   86,   86, 2045,
      2042,   86, 2044, 2041, 2046,   86, 2047, 2043,   86, 2040,
        86,   86,   86,   86,   86, 2053,   86, 2056,   86, 2048,
@@ -2024,7 +2027,7 @@ static const flex_int16_t yy_nxt[6988] =
        86,   86, 2083, 2085, 2081, 2082,   86,   86, 2073,   86,
 
      2076, 2084, 2079,   86,   86,   86,   86, 2093,   86, 2080,
-       86, 2097, 3557,   86, 2095, 2086, 2087, 2088,   86, 2096,
+       86, 2097, 3564,   86, 2095, 2086, 2087, 2088,   86, 2096,
        86,   86, 2089, 2091, 2090, 2098, 2092,   86, 2094, 2099,
      2102,   86, 2100, 2101,   86,   86,   86, 2106,   86,   86,
      2103,   86, 2108,   86,   86,   86, 2111, 2112,   86,   86,
@@ -2046,7 +2049,7 @@ static const flex_int16_t yy_nxt[6988] =
      2181, 2173, 2175, 2187, 2184, 2177, 2178,   86, 2179, 2182,
 
      2185,   86,   86, 2186,   86,   86, 2188, 2191, 2192,   86,
-     2193,   86, 2194, 2196, 3557, 2189, 2197, 2195,   86,   86,
+     2193,   86, 2194, 2196, 3564, 2189, 2197, 2195,   86,   86,
      2190,   86,   86,   86, 2201,   86, 2199,   86,   86,   86,
        86, 2198, 2203,   86, 2205, 2200, 2207, 2202,   86, 2204,
      2209,   86,   86, 2210,   86,   86,   86,  170,   86,   86,
@@ -2085,13 +2088,13 @@ static const flex_int16_t yy_nxt[6988] =
        86,   86, 2358, 2363,   86, 2359,   86, 2356,   86,   86,
      2365,   86, 2364,   86, 2368, 2361, 2369,   86, 2366,   86,
      2367, 2373,   86,   86,   86,   86, 2370,   86, 2372,   86,
-       86,   86, 3557,   86,   86,   86,   86, 2371, 2381,   86,
+       86,   86, 3564,   86,   86,   86,   86, 2371, 2381,   86,
        86, 2374, 2375, 2376, 2379, 2377, 2380, 2382, 2383, 2387,
        86,   86, 2378,   86, 2384, 2385, 2386,   86,   86, 2388,
 
        86,   86, 2391, 2390,   86,   86, 2396,   86,   86, 2398,
        86,   86, 2389, 2392, 2395,   86,   86, 2397, 2393, 2401,
-       86, 2402, 2399,   86,  170, 2405, 2394,   86, 3557, 2407,
+       86, 2402, 2399,   86,  170, 2405, 2394,   86, 3564, 2407,
      2400,   86, 2409, 2403, 2408,   86,   86, 2410,   86, 2411,
        86,   86, 2404,   86, 2414,   86, 2406, 2413, 2412,   86,
      2415,   86, 2419,   86,   86, 2420,   86, 2423,   86, 2422,
@@ -2129,13 +2132,13 @@ static const flex_int16_t yy_nxt[6988] =
      2568,   86, 2555,   86, 2557,   86,   86,   86, 2566,   86,
      2559, 2563, 2569, 2567, 2570,   86,   86,   86,   86, 2573,
        86,   86,   86,   86,   86,   86, 2574, 2575, 2572, 2576,
-     2571, 2577, 2579, 2580, 2584, 2578,   86, 3557,   86,   86,
+     2571, 2577, 2579, 2580, 2584, 2578,   86, 3564,   86,   86,
      2581,   86, 2585, 2582, 2583, 2586,   86, 2587,   86,   86,
      2590,   86,   86,  170,   86, 2588,   86, 2589, 2591,   86,
 
      2596,   86,   86,   86,   86,   86,   86,   86, 2604,   86,
      2594, 2597, 2592, 2598, 2593, 2595,   86, 2599, 2600, 2602,
-       86, 2601, 3557, 2603, 2607,   86,   86, 2608, 2606, 2605,
+       86, 2601, 3564, 2603, 2607,   86,   86, 2608, 2606, 2605,
      2609,   86,   86,   86, 2612, 2610, 2613,   86, 2611,   86,
        86,   86,   86, 2615,   86,   86, 2614,   86, 2617,   86,
        86, 2621, 2622, 2616,   86, 2619,   86, 2618,   86, 2624,
@@ -2178,7 +2181,7 @@ static const flex_int16_t yy_nxt[6988] =
      2783, 2784, 2787, 2788, 2792,   86, 2789, 2791,   86,   86,
 
        86,   86,   86,   86,   86,   86,   86,   86, 2796, 2803,
-       86, 2804,   86,   86, 2802, 3557, 2793, 2794, 2795, 2797,
+       86, 2804,   86,   86, 2802, 3564, 2793, 2794, 2795, 2797,
      2798, 2799, 2800,   86, 2801,   86, 2808,   86, 2809,   86,
      2810, 2807,   86, 2805,   86,   86,   86,   86,   86,   86,
        86, 2806,   86, 2815,   86,   86, 2820,   86,   86, 2812,
@@ -2193,14 +2196,14 @@ static const flex_int16_t yy_nxt[6988] =
      2853, 2854,   86, 2848, 2856,   86,   86, 2852,   86, 2849,
      2850, 2858,   86, 2859,   86, 2857,   86,   86, 2861, 2864,
        86,   86, 2865, 2860, 2867,   86, 2863,   86, 2862,   86,
-       86,   86,   86, 2874,   86,   86,   86,   86, 3557, 2866,
+       86,   86,   86, 2874,   86,   86,   86,   86, 3564, 2866,
      2868, 2871, 2869, 2870, 2872, 2873, 2877,   86,   86,   86,
        86, 2875, 2876, 2878, 2879,   86,   86,   86,   86,   86,
      2881,   86,   86,   86, 2880, 2882,   86, 2884, 2887, 2885,
        86, 2888, 2890,   86, 2886, 2883,   86, 2889, 2891,   86,
 
        86, 2892, 2894,  170,   86,   86,   86, 2895, 2899, 2893,
-     2896,   86,   86, 2901,   86,   86, 2900, 3557,   86, 2904,
+     2896,   86,   86, 2901,   86,   86, 2900, 3564,   86, 2904,
        86,   86, 2897, 2903, 2898, 2905,   86, 2907,   86,   86,
      2902, 2909, 2908,   86, 2906,   86, 2910,   86, 2911,   86,
      2912, 2914,   86,   86,   86,   86, 2915,   86, 2916,   86,
@@ -2232,14 +2235,14 @@ static const flex_int16_t yy_nxt[6988] =
        86,   86,   86,   86,   86, 3037, 3047,   86,   86, 3032,
        86, 3053, 3034, 3038, 3033, 3036, 3041, 3039,   86, 3042,
 
-     3557, 3044,   86, 3040, 3043,   86, 3045,   86,   86, 3046,
+     3564, 3044,   86, 3040, 3043,   86, 3045,   86,   86, 3046,
        86, 3048,   86, 3049,   86, 3050,   86, 3051,   86, 3052,
        86,   86, 3055,   86, 3056, 3054,   86, 3059, 3058,   86,
        86, 3060,   86, 3064,   86, 3057, 3065,   86, 3061,   86,
        86,   86, 3066, 3069,   86,   86, 3067,   86, 3071,   86,
      3062,   86, 3063,   86, 3070,   86, 3072, 3073,   86, 3068,
        86,   86, 3074, 3078, 3075, 3079,   86, 3080,   86, 3076,
-     3077,   86,   86,   86,   86, 3081,   86, 3086,   86, 3557,
+     3077,   86,   86,   86,   86, 3081,   86, 3086,   86, 3564,
        86, 3082, 3087,   86,   86, 3084,   86, 3089, 3090,   86,
        86, 3085, 3083, 3088, 3091, 3092,   86, 3094,   86,   86,
 
@@ -2256,115 +2259,118 @@ static const flex_int16_t yy_nxt[6988] =
 
        86, 3148,   86, 3143, 3141, 3142, 3145,   86, 3146, 3147,
        86, 3149, 3153,   86,   86, 3150,   86, 3155, 3152, 3151,
-       86,   86,   86, 3156, 3159,   86, 3161,   86,   86, 3163,
-       86,   86,   86, 3154, 3162, 3165,   86,   86, 3157,   86,
-       86, 3160, 3171,   86, 3168,   86,   86, 3158, 3166,   86,
-     3170, 3174, 3164, 3167,   86,   86, 3169,   86, 3173,   86,
-     3177,   86,   86, 3180,   86, 3181, 3172,   86,   86,   86,
-     3183,   86,   86, 3184, 3176, 3178,   86, 3175, 3186,   86,
-       86, 3179, 3187,   86, 3190,   86,   86, 3182,   86,   86,
-     3195, 3185, 3189,   86,   86, 3188,   86, 3192, 3193,   86,
-
-     3199,   86,   86,   86, 3191, 3557, 3197,   86, 3194,   86,
-     3201,   86, 3196,   86, 3202,   86, 3203, 3200, 3206, 3198,
-       86, 3204, 3209, 3205,   86, 3207,   86,   86,   86,   86,
-     3208, 3210, 3212,   86, 3211,   86, 3215,   86,   86, 3214,
-     3213,   86,   86, 3218,   86,   86,   86,   86, 3223,   86,
-     3219,   86,   86,   86, 3216, 3217, 3227,   86, 3230, 3220,
-     3222, 3226, 3228,   86,   86, 3224,   86, 3225, 3229,   86,
-     3221, 3232, 3233,   86, 3234,   86, 3235,   86, 3231, 3236,
-       86,   86,   86, 3239,   86,   86, 3241,   86,   86,   86,
-     3240, 3242,   86,   86, 3237,   86,   86,   86, 3248, 3249,
-
-       86,   86,   86, 3243,   86,   86,   86,   86, 3238,   86,
-     3244, 3255,   86,   86, 3246, 3245, 3254,   86, 3247, 3252,
-     3258, 3251, 3256,   86, 3253, 3260,   86, 3250,   86, 3259,
-       86, 3257,   86, 3261, 3263,   86, 3264,   86, 3262,   86,
-       86, 3267, 3268,   86, 3265,   86, 3266,   86, 3269, 3270,
-       86,   86,   86,   86,   86,   86, 3271, 3272,   86, 3273,
-     3276,   86,   86, 3274, 3277, 3275, 3279, 3278,   86,   86,
-       86,   86,   86,   86,   86,   86, 3288,   86, 3291,   86,
-     3289, 3280,   86, 3557,   86,   86, 3284, 3292, 3281, 3282,
-     3283, 3285, 3286,   86, 3287,   86, 3294, 3290, 3295, 3293,
-
-     3296,   86, 3297,   86,   86, 3299,   86,   86, 3298, 3302,
-       86,   86, 3300, 3414, 3301, 3303,   86, 3304, 3305,   86,
-       86, 3306, 3307, 3311,   86, 3308,   86, 3309, 3310,   86,
-       86,   86, 3314,   86, 3312,   86,   86,   86, 3317,   86,
-     3313,   86,   86, 3321,   86,   86,   86, 3320,   86,   86,
-     3316,   86,   86, 3315,   86, 3324, 3325,   86, 3326, 3318,
-       86, 3319, 3329, 3330,   86, 3322, 3327,   86, 3332, 3331,
-       86, 3323, 3328, 3333,   86, 3334,   86,   86,   86,   86,
-     3341,   86, 3336, 3339,   86, 3335,   86, 3337, 3340,   86,
-     3338,   86,   86,   86, 3348,   86, 3343, 3345, 3346,   86,
-
-     3349,   86, 3351,   86, 3342, 3344,   86, 3350, 3352,   86,
-     3347,   86, 3355,   86, 3353,   86, 3354, 3356,   86, 3358,
-       86, 3359,   86,   86, 3357, 3360,   86, 3361,   86, 3362,
-       86, 3363,   86, 3364,   86, 3365,   86,   86, 3368,   86,
-     3369,   86,   86,   86,   86,   86, 3367, 3373,   86, 3366,
-       86, 3370, 3375,   86,   86, 3371,   86,   86, 3379,   86,
-     3376, 3380,   86,   86, 3372, 3382,   86, 3377, 3378, 3374,
-       86,   86,   86, 3384, 3381,   86, 3386,   86, 3389,   86,
-     3388, 3383,   86,   86,   86,   86,   86, 3391,   86,   86,
-     3387,   86, 3395, 3390,   86, 3397,   86, 3385, 3396,   86,
-
-       86,   86, 3392, 3393, 3394, 3400,   86,   86,   86, 3398,
-     3401,   86, 3402, 3403,   86, 3404,   86, 3405,   86,   86,
-     3407,   86, 3399, 3408, 3406,   86, 3409,   86,   86,   86,
-     3416, 3411, 3413,   86,   86, 3410, 3412,   86,   86,   86,
-       86,   86,   86, 3415,   86,   86, 3417, 3425,   86, 3423,
-     3428,   86,   86, 3418, 3420, 3419, 3422, 3424,   86,   86,
-     3557,   86,   86, 3427, 3421, 3426, 3430,   86, 3429, 3433,
-       86, 3434, 3432, 3431, 3435,   86,   86, 3436, 3437,   86,
-     3438,   86,   86,   86,   86,   86, 3439, 3441, 3442,   86,
-     3443,   86, 3446,   86,   86,   86,   86,   86,   86, 3449,
-
-     3450,   86, 3440, 3452,   86,   86, 3445, 3447, 3448, 3453,
-       86,   86, 3454,   86, 3444, 3451, 3456,   86, 3459,   86,
-       86, 3460,   86,   86, 3455,   86, 3457, 3463, 3464,   86,
-     3461, 3458,   86,   86,   86,   86, 3469,   86,   86, 3465,
-     3468,   86, 3462, 3470,   86, 3466,   86,   86, 3467,   86,
-       86, 3474,   86,   86,   86, 3476,   86,   86,   86, 3471,
-     3473, 3472, 3481, 3482, 3483,   86, 3478, 3479,   86, 3475,
-       86, 3477,   86, 3487,   86, 3480,   86, 3489,   86, 3490,
-       86, 3488,   86,   86,   86, 3491,   86, 3492, 3484, 3486,
-     3485, 3493, 3495, 3496,   86,   86, 3498,   86,   86,   86,
-
-     3497,   86,   86, 3494,   86, 3499,   86, 3504,   86, 3501,
-       86,   86,   86,   86,   86, 3507, 3508,   86, 3500, 3509,
-       86,   86, 3510, 3502, 3506, 3503, 3511, 3505,   86,   86,
-     3515, 3512,   86,   86,   86,   86, 3519, 3516,   86, 3513,
-       86, 3514,   86, 3521,   86, 3522, 3517,   86,   86, 3526,
-       86,   86, 3523, 3529,   86, 3524, 3527, 3520,   86, 3525,
-     3518,   86,   86, 3528,   86, 3530,   86,   86,   86, 3531,
-       86, 3533, 3535,   86,   86, 3537,   86,   86,   86, 3538,
-       86, 3541,   86, 3532, 3542,   86, 3534, 3536,   86, 3545,
-     3546,   86,   86, 3548,   86, 3539, 3540, 3543,   86, 3547,
-
-       86, 3544, 3549,   86,   86, 3550,   86,   86, 3557, 3551,
-     3557, 3552, 3555,   86, 3556,   86, 3557, 3557, 3557, 3553,
-     3557, 3557, 3557, 3557, 3557, 3557, 3554,   47,   47,   47,
-       47,   47,   47,   47,   52,   52,   52,   52,   52,   52,
-       52,   57,   57,   57,   57,   57,   57,   57,   63,   63,
-       63,   63,   63,   63,   63,   68,   68,   68,   68,   68,
-       68,   68,   74,   74,   74,   74,   74,   74,   74,   80,
-       80,   80,   80,   80,   80,   80,   89,   89, 3557,   89,
-       89,   89,   89,  160,  160, 3557, 3557, 3557,  160,  160,
-      162,  162, 3557, 3557,  162, 3557,  162,  164, 3557, 3557,
-
-     3557, 3557, 3557,  164,  167,  167, 3557, 3557, 3557,  167,
-      167,  169, 3557, 3557, 3557, 3557, 3557,  169,  171,  171,
-     3557,  171,  171,  171,  171,  174, 3557, 3557, 3557, 3557,
-     3557,  174,  177,  177, 3557, 3557, 3557,  177,  177,   90,
-       90, 3557,   90,   90,   90,   90,   17, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557
+       86,   86,   86, 3156, 3159,   86, 3161,   86,   86, 3164,
+       86, 3162,   86, 3154, 3163, 3166,   86,   86, 3157,   86,
+       86, 3160,   86,   86,   86, 3169,   86, 3158, 3165, 3171,
+     3172,   86,   86, 3167, 3175, 3168,   86,   86, 3170,   86,
+       86, 3174, 3182, 3173,   86, 3178, 3181,   86,   86, 3176,
+       86, 3179,   86, 3184,   86, 3177,   86, 3185, 3180,   86,
+     3187,   86, 3188,   86,   86, 3191,   86,   86,   86,   86,
+     3183, 3189,   86, 3196,   86,   86, 3186, 3194, 3193,   86,
+
+     3200,   86,   86,   86, 3190, 3192, 3198,   86,   86, 3195,
+     3202, 3197,   86,   86, 3564, 3199, 3203, 3201,   86, 3204,
+     3205, 3207, 3210, 3206, 3208,   86,   86,   86,   86, 3209,
+     3211,   86, 3213,   86,   86,   86, 3212, 3216,   86, 3214,
+     3219,   86,   86,   86,   86,   86,   86, 3224,   86,   86,
+       86, 3564,   86,   86, 3215, 3217, 3218, 3220, 3231, 3223,
+     3221, 3227, 3228,   86, 3229,   86, 3226,   86, 3225, 3222,
+     3230,   86,   86, 3234,   86, 3235,   86, 3233, 3236,   86,
+       86, 3232, 3237,   86,   86, 3240,   86,   86, 3242,   86,
+       86,   86, 3241, 3238, 3244,   86,   86,   86,   86,   86,
+
+       86, 3250, 3243, 3251,   86,   86,   86,   86,   86, 3245,
+     3239,   86, 3257,   86, 3258,   86,   86, 3248, 3246, 3247,
+     3256, 3249, 3254, 3260,   86, 3253,   86, 3255,   86,   86,
+       86, 3252, 3564, 3263, 3259, 3265,   86, 3266,   86,   86,
+       86,   86, 3269,   86, 3261, 3262, 3267,   86,   86, 3272,
+       86, 3264, 3270, 3268,   86, 3271,   86,   86,   86, 3273,
+     3274,   86, 3275, 3276,   86,   86, 3278,   86,   86,   86,
+       86, 3280,   86,   86,   86, 3281, 3279,   86, 3277,   86,
+       86,   86,   86,   86,   86, 3290, 3291, 3282, 3286, 3283,
+     3284, 3285, 3293, 3303, 3287, 3288,   86, 3297,   86, 3564,
+
+     3289, 3294, 3292, 3295,   86, 3298,   86, 3296, 3299,   86,
+       86, 3301,   86,   86, 3300, 3304,   86,   86, 3302, 3306,
+       86, 3307, 3308,   86,   86, 3309, 3310, 3314,   86, 3311,
+       86,   86, 3305, 3312, 3313,   86,   86,   86, 3317,   86,
+     3315,   86,   86, 3320,   86,   86, 3316,   86,   86, 3318,
+     3324,   86, 3323,   86,   86, 3319,   86,   86,   86,   86,
+     3328, 3327,   86,   86, 3321, 3322, 3329, 3332, 3325, 3333,
+       86,   86, 3334, 3330,   86, 3335,   86, 3331, 3326, 3336,
+       86, 3337,   86,   86,   86, 3342, 3338,   86, 3339, 3344,
+     3343,   86,   86, 3340,   86,   86, 3341,   86,   86, 3348,
+
+     3352, 3345, 3346, 3349, 3351,   86,   86,   86,   86, 3354,
+       86, 3355,   86, 3347, 3353,   86, 3350, 3358,   86,   86,
+     3357,   86, 3356, 3359,   86, 3362,   86,   86, 3360, 3363,
+       86, 3364,   86, 3365,   86, 3366,   86, 3367,   86, 3361,
+     3368,   86, 3369,   86,   86,   86, 3372,   86, 3373,   86,
+       86,   86,   86, 3370, 3371,   86, 3375, 3377,   86, 3374,
+     3379,   86,   86,   86,   86,   86, 3383, 3380, 3384,   86,
+       86, 3376, 3386,   86, 3378, 3381, 3382,   86, 3385,   86,
+     3388,   86, 3390,   86,   86, 3393,   86, 3392, 3387,   86,
+       86,   86,   86,   86, 3395,   86,   86,   86,   86, 3399,
+
+     3394, 3391, 3401,   86,   86, 3389, 3400,   86,   86, 3396,
+     3397, 3398, 3405,   86, 3408,   86, 3406,   86, 3402, 3409,
+       86, 3407, 3403,   86, 3404, 3410,   86,   86,   86,   86,
+       86, 3413, 3412,   86,   86,   86,   86, 3419,   86, 3418,
+     3411,   86, 3421, 3415, 3417,   86,   86,   86, 3414,   86,
+       86, 3420,   86, 3416,   86,   86,   86, 3423, 3422,   86,
+     3430, 3428,   86, 3425, 3424, 3427, 3429, 3432, 3434,   86,
+       86,   86,   86,   86, 3426,   86, 3436, 3431, 3433, 3439,
+       86, 3441,   86,   86, 3440,   86, 3437,   86, 3442,   86,
+     3435, 3443,   86, 3438, 3444,   86,   86,   86,   86, 3447,
+
+       86,   86, 3445, 3448, 3452, 3446, 3449,   86,   86,   86,
+       86,   86, 3451,   86, 3450, 3461, 3455, 3456,   86,   86,
+     3454, 3453, 3458,   86, 3459,   86, 3460,   86,   86, 3457,
+     3463,   86, 3462,   86, 3464, 3466,   86,   86, 3467,   86,
+       86, 3468, 3470, 3471,   86,   86, 3465,   86,   86,   86,
+     3476,   86, 3475,   86, 3472, 3477,   86, 3473, 3469,   86,
+       86,   86,   86,   86, 3474,   86, 3481,   86, 3483,   86,
+       86,   86,   86,   86, 3478, 3480, 3488, 3489,   86, 3479,
+     3482,   86, 3485, 3486, 3484, 3496, 3487, 3490,   86, 3494,
+       86,   86,   86, 3491,   86, 3497, 3492, 3495,   86,   86,
+
+     3493,   86,   86, 3498, 3499, 3502, 3500, 3503,   86,   86,
+       86,   86, 3505,   86, 3504,   86,   86,   86,   86, 3506,
+     3511, 3501,   86, 3508,   86,   86,   86,   86, 3514, 3507,
+     3515,   86,   86,   86,   86,   86, 3509, 3510, 3513, 3518,
+       86, 3512, 3516, 3519,   86, 3517,   86, 3522, 3521, 3523,
+       86, 3520,   86, 3524,   86, 3526,   86, 3528,   86, 3529,
+       86,   86,   86, 3533,   86, 3530, 3564,   86, 3531, 3536,
+       86, 3527, 3534,   86,   86, 3535, 3525,   86,   86,   86,
+       86, 3532,   86,   86, 3537, 3538,   86, 3540, 3542,   86,
+       86, 3544,   86, 3539,   86, 3545,   86, 3548, 3541, 3543,
+
+     3549,   86, 3546,   86,   86, 3552, 3553,   86,   86, 3555,
+       86, 3547,   86, 3550,   86, 3554, 3556,   86,   86, 3557,
+       86,   86, 3551, 3558, 3564, 3559, 3562,   86, 3563,   86,
+     3564, 3564, 3564, 3560, 3564, 3564, 3564, 3564, 3564, 3564,
+     3561,   47,   47,   47,   47,   47,   47,   47,   52,   52,
+       52,   52,   52,   52,   52,   57,   57,   57,   57,   57,
+       57,   57,   63,   63,   63,   63,   63,   63,   63,   68,
+       68,   68,   68,   68,   68,   68,   74,   74,   74,   74,
+       74,   74,   74,   80,   80,   80,   80,   80,   80,   80,
+       89,   89, 3564,   89,   89,   89,   89,  160,  160, 3564,
+
+     3564, 3564,  160,  160,  162,  162, 3564, 3564,  162, 3564,
+      162,  164, 3564, 3564, 3564, 3564, 3564,  164,  167,  167,
+     3564, 3564, 3564,  167,  167,  169, 3564, 3564, 3564, 3564,
+     3564,  169,  171,  171, 3564,  171,  171,  171,  171,  174,
+     3564, 3564, 3564, 3564, 3564,  174,  177,  177, 3564, 3564,
+     3564,  177,  177,   90,   90, 3564,   90,   90,   90,   90,
+       17, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+
+     3564
     } ;
 
-static const flex_int16_t yy_chk[6988] =
+static const flex_int16_t yy_chk[7002] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -2374,7 +2380,7 @@ static const flex_int16_t yy_chk[6988] =
         5,    3,    6,   24,    4,   24,   24,    5,   24,    6,
         7,    7,    7,    7,   24,    7,    8,    8,    8,    8,
        33,    8,    7,    9,    9,    9,   26,   26,    8,   10,
-       10,   10,   19,   29,    9,   33,   19,   29, 3565,   35,
+       10,   10,   19,   29,    9,   33,   19,   29, 3572,   35,
        10,   11,   11,   11,   11,   11,   11,   13,   13,   13,
 
        13,   34,   13,   11,   35,   99,   34,   29,   38,   13,
@@ -3028,112 +3034,115 @@ static const flex_int16_t yy_chk[6988] =
 
      3054, 3051, 3052, 3044, 3041, 3042, 3048, 3056, 3049, 3050,
      3055, 3052, 3056, 3057, 3059, 3053, 3058, 3058, 3055, 3054,
-     3060, 3061, 3063, 3059, 3062, 3062, 3066, 3066, 3067, 3068,
-     3068, 3070, 3074, 3057, 3067, 3072, 3072, 3075, 3060, 3076,
-     3077, 3063, 3081, 3081, 3076, 3078, 3082, 3061, 3074, 3083,
-     3078, 3084, 3070, 3075, 3085, 3086, 3077, 3084, 3083, 3088,
-     3088, 3089, 3090, 3091, 3091, 3093, 3082, 3095, 3097, 3099,
-     3096, 3093, 3103, 3097, 3086, 3089, 3096, 3085, 3100, 3100,
-     3102, 3090, 3101, 3101, 3104, 3104, 3105, 3095, 3107, 3106,
-     3108, 3099, 3103, 3109, 3110, 3102, 3108, 3105, 3106, 3111,
-
-     3112, 3112, 3113, 3121, 3104,    0, 3110, 3114, 3107, 3120,
-     3114, 3115, 3109, 3126, 3115, 3116, 3116, 3113, 3122, 3111,
-     3131, 3120, 3125, 3121, 3122, 3123, 3123, 3124, 3125, 3128,
-     3124, 3126, 3129, 3129, 3128, 3130, 3132, 3133, 3136, 3131,
-     3130, 3137, 3132, 3134, 3134, 3138, 3141, 3139, 3140, 3140,
-     3136, 3142, 3143, 3148, 3133, 3133, 3145, 3145, 3148, 3137,
-     3139, 3143, 3146, 3146, 3149, 3141, 3150, 3142, 3147, 3147,
-     3138, 3150, 3151, 3151, 3152, 3152, 3153, 3153, 3149, 3154,
-     3154, 3155, 3156, 3157, 3164, 3158, 3160, 3160, 3166, 3157,
-     3158, 3162, 3162, 3167, 3155, 3168, 3169, 3170, 3170, 3172,
-
-     3172, 3173, 3174, 3164, 3176, 3175, 3184, 3177, 3156, 3183,
-     3166, 3178, 3178, 3181, 3168, 3167, 3177, 3188, 3169, 3175,
-     3182, 3174, 3179, 3179, 3176, 3184, 3182, 3173, 3185, 3183,
-     3195, 3181, 3193, 3185, 3189, 3189, 3191, 3191, 3188, 3192,
-     3196, 3194, 3195, 3202, 3192, 3203, 3193, 3194, 3196, 3197,
-     3197, 3198, 3205, 3200, 3201, 3204, 3198, 3200, 3208, 3201,
-     3204, 3206, 3209, 3202, 3205, 3203, 3208, 3206, 3210, 3211,
-     3214, 3217, 3213, 3216, 3215, 3219, 3217, 3220, 3221, 3224,
-     3219, 3209, 3222,    0, 3221, 3226, 3214, 3222, 3210, 3211,
-     3213, 3215, 3215, 3225, 3216, 3239, 3225, 3220, 3226, 3224,
-
-     3230, 3230, 3231, 3231, 3232, 3237, 3237, 3238, 3232, 3240,
-     3240, 3386, 3238, 3386, 3239, 3243, 3243, 3244, 3244, 3248,
-     3244, 3245, 3245, 3248, 3245, 3246, 3246, 3247, 3247, 3250,
-     3247, 3251, 3252, 3252, 3250, 3253, 3254, 3257, 3257, 3258,
-     3251, 3259, 3260, 3261, 3261, 3262, 3265, 3260, 3266, 3268,
-     3254, 3269, 3267, 3253, 3271, 3266, 3267, 3272, 3268, 3258,
-     3274, 3259, 3272, 3273, 3273, 3262, 3269, 3275, 3275, 3274,
-     3278, 3265, 3271, 3276, 3276, 3277, 3277, 3279, 3280, 3283,
-     3282, 3284, 3279, 3281, 3285, 3278, 3282, 3280, 3281, 3281,
-     3280, 3288, 3286, 3287, 3289, 3289, 3284, 3286, 3287, 3294,
-
-     3290, 3291, 3292, 3292, 3283, 3285, 3290, 3291, 3293, 3293,
-     3288, 3295, 3298, 3298, 3294, 3301, 3295, 3300, 3300, 3304,
-     3304, 3305, 3305, 3313, 3301, 3306, 3306, 3307, 3307, 3309,
-     3309, 3310, 3310, 3311, 3311, 3312, 3312, 3315, 3316, 3316,
-     3317, 3317, 3318, 3319, 3320, 3325, 3315, 3322, 3322, 3313,
-     3323, 3318, 3324, 3324, 3326, 3319, 3327, 3328, 3328, 3331,
-     3325, 3329, 3329, 3335, 3320, 3332, 3332, 3326, 3327, 3323,
-     3336, 3337, 3339, 3336, 3331, 3338, 3338, 3341, 3342, 3343,
-     3341, 3335, 3344, 3345, 3342, 3346, 3349, 3344, 3347, 3350,
-     3339, 3353, 3349, 3343, 3354, 3353, 3357, 3337, 3350, 3370,
-
-     3366, 3376, 3345, 3346, 3347, 3366, 3379, 3367, 3383, 3354,
-     3367, 3377, 3370, 3371, 3371, 3372, 3372, 3374, 3374, 3378,
-     3377, 3381, 3357, 3378, 3376, 3384, 3379, 3385, 3387, 3388,
-     3388, 3383, 3385, 3389, 3390, 3381, 3384, 3391, 3392, 3393,
-     3395, 3394, 3397, 3387, 3398, 3396, 3389, 3397, 3401, 3395,
-     3400, 3400, 3407, 3390, 3392, 3391, 3394, 3396, 3399, 3406,
-        0, 3402, 3409, 3399, 3393, 3398, 3402, 3414, 3401, 3408,
-     3408, 3409, 3407, 3406, 3410, 3410, 3411, 3411, 3412, 3412,
-     3413, 3413, 3415, 3417, 3416, 3418, 3414, 3416, 3417, 3419,
-     3418, 3420, 3421, 3422, 3424, 3426, 3423, 3430, 3421, 3424,
-
-     3425, 3425, 3415, 3427, 3427, 3431, 3420, 3422, 3423, 3429,
-     3429, 3434, 3430, 3436, 3419, 3426, 3432, 3432, 3439, 3439,
-     3440, 3440, 3441, 3442, 3431, 3445, 3434, 3443, 3444, 3447,
-     3441, 3436, 3446, 3443, 3444, 3448, 3449, 3449, 3454, 3445,
-     3448, 3455, 3442, 3451, 3451, 3446, 3457, 3458, 3447, 3460,
-     3461, 3458, 3462, 3463, 3464, 3461, 3465, 3466, 3467, 3454,
-     3457, 3455, 3466, 3467, 3468, 3468, 3463, 3464, 3471, 3460,
-     3473, 3462, 3472, 3474, 3474, 3465, 3475, 3476, 3477, 3477,
-     3478, 3475, 3479, 3476, 3481, 3478, 3480, 3479, 3471, 3473,
-     3472, 3480, 3482, 3484, 3484, 3485, 3486, 3486, 3482, 3489,
-
-     3485, 3488, 3490, 3481, 3491, 3488, 3492, 3493, 3494, 3490,
-     3500, 3495, 3502, 3493, 3497, 3497, 3499, 3499, 3489, 3500,
-     3503, 3501, 3500, 3491, 3495, 3492, 3501, 3494, 3504, 3505,
-     3505, 3502, 3506, 3507, 3509, 3510, 3510, 3506, 3511, 3503,
-     3516, 3504, 3512, 3512, 3513, 3513, 3507, 3514, 3515, 3517,
-     3517, 3518, 3514, 3520, 3520, 3515, 3518, 3511, 3521, 3516,
-     3509, 3519, 3522, 3519, 3523, 3521, 3524, 3525, 3528, 3522,
-     3530, 3524, 3527, 3527, 3531, 3530, 3532, 3533, 3537, 3531,
-     3534, 3534, 3538, 3523, 3536, 3536, 3525, 3528, 3539, 3539,
-     3540, 3540, 3541, 3543, 3543, 3532, 3533, 3537, 3545, 3541,
-
-     3551, 3538, 3544, 3544, 3547, 3545, 3550, 3552,    0, 3547,
-        0, 3550, 3553, 3553, 3554, 3554,    0,    0,    0, 3551,
-        0,    0,    0,    0,    0,    0, 3552, 3558, 3558, 3558,
-     3558, 3558, 3558, 3558, 3559, 3559, 3559, 3559, 3559, 3559,
-     3559, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3561, 3561,
-     3561, 3561, 3561, 3561, 3561, 3562, 3562, 3562, 3562, 3562,
-     3562, 3562, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3564,
-     3564, 3564, 3564, 3564, 3564, 3564, 3566, 3566,    0, 3566,
-     3566, 3566, 3566, 3567, 3567,    0,    0,    0, 3567, 3567,
-     3568, 3568,    0,    0, 3568,    0, 3568, 3569,    0,    0,
-
-        0,    0,    0, 3569, 3570, 3570,    0,    0,    0, 3570,
-     3570, 3571,    0,    0,    0,    0,    0, 3571, 3572, 3572,
-        0, 3572, 3572, 3572, 3572, 3573,    0,    0,    0,    0,
-        0, 3573, 3574, 3574,    0,    0,    0, 3574, 3574, 3575,
-     3575,    0, 3575, 3575, 3575, 3575, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
-     3557, 3557, 3557, 3557, 3557, 3557, 3557
+     3060, 3061, 3063, 3059, 3062, 3062, 3066, 3070, 3067, 3068,
+     3068, 3066, 3066, 3057, 3067, 3072, 3072, 3074, 3060, 3075,
+     3076, 3063, 3077, 3082, 3078, 3076, 3085, 3061, 3070, 3078,
+     3081, 3081, 3083, 3074, 3084, 3075, 3086, 3089, 3077, 3090,
+     3084, 3083, 3093, 3082, 3088, 3088, 3091, 3091, 3093, 3085,
+     3095, 3089, 3097, 3096, 3099, 3086, 3102, 3097, 3090, 3096,
+     3100, 3100, 3101, 3101, 3103, 3104, 3104, 3105, 3106, 3107,
+     3095, 3102, 3109, 3108, 3110, 3111, 3099, 3106, 3105, 3108,
+
+     3112, 3112, 3113, 3121, 3103, 3104, 3110, 3114, 3120, 3107,
+     3114, 3109, 3126, 3115,    0, 3111, 3115, 3113, 3116, 3116,
+     3120, 3122, 3125, 3121, 3123, 3123, 3124, 3122, 3125, 3124,
+     3126, 3128, 3129, 3129, 3130, 3131, 3128, 3132, 3133, 3130,
+     3134, 3134, 3137, 3132, 3138, 3136, 3139, 3140, 3140, 3141,
+     3142,    0, 3143, 3148, 3131, 3133, 3133, 3136, 3148, 3139,
+     3137, 3143, 3145, 3145, 3146, 3146, 3142, 3149, 3141, 3138,
+     3147, 3147, 3150, 3151, 3151, 3152, 3152, 3150, 3153, 3153,
+     3155, 3149, 3154, 3154, 3156, 3157, 3161, 3158, 3160, 3160,
+     3165, 3157, 3158, 3155, 3163, 3163, 3167, 3168, 3169, 3170,
+
+     3171, 3171, 3161, 3173, 3173, 3174, 3175, 3177, 3176, 3165,
+     3156, 3178, 3179, 3179, 3180, 3180, 3182, 3169, 3167, 3168,
+     3178, 3170, 3176, 3183, 3184, 3175, 3185, 3177, 3186, 3183,
+     3189, 3174,    0, 3186, 3182, 3190, 3190, 3192, 3192, 3194,
+     3196, 3193, 3195, 3203, 3184, 3185, 3193, 3197, 3195, 3198,
+     3198, 3189, 3196, 3194, 3199, 3197, 3201, 3202, 3204, 3199,
+     3201, 3205, 3202, 3203, 3206, 3207, 3205, 3209, 3210, 3211,
+     3212, 3207, 3215, 3214, 3240, 3209, 3206, 3216, 3204, 3217,
+     3218, 3220, 3221, 3225, 3227, 3218, 3220, 3210, 3215, 3211,
+     3212, 3214, 3222, 3240, 3216, 3216, 3223, 3227, 3222,    0,
+
+     3217, 3223, 3221, 3225, 3226, 3231, 3231, 3226, 3232, 3232,
+     3233, 3238, 3238, 3239, 3233, 3241, 3241, 3243, 3239, 3245,
+     3245, 3246, 3246, 3250, 3246, 3247, 3247, 3250, 3247, 3248,
+     3248, 3255, 3243, 3249, 3249, 3252, 3249, 3253, 3254, 3254,
+     3252, 3256, 3259, 3259, 3260, 3261, 3253, 3262, 3264, 3255,
+     3263, 3263, 3262, 3267, 3268, 3256, 3269, 3270, 3271, 3273,
+     3269, 3268, 3274, 3276, 3260, 3261, 3270, 3274, 3264, 3275,
+     3275, 3280, 3276, 3271, 3277, 3277, 3285, 3273, 3267, 3278,
+     3278, 3279, 3279, 3281, 3282, 3283, 3280, 3286, 3281, 3284,
+     3283, 3283, 3287, 3282, 3288, 3284, 3282, 3290, 3289, 3288,
+
+     3292, 3285, 3286, 3289, 3291, 3291, 3292, 3296, 3293, 3294,
+     3294, 3295, 3295, 3287, 3293, 3297, 3290, 3300, 3300, 3303,
+     3297, 3305, 3296, 3302, 3302, 3307, 3307, 3316, 3303, 3308,
+     3308, 3309, 3309, 3310, 3310, 3312, 3312, 3313, 3313, 3305,
+     3314, 3314, 3315, 3315, 3322, 3318, 3319, 3319, 3320, 3320,
+     3321, 3323, 3328, 3316, 3318, 3326, 3322, 3325, 3325, 3321,
+     3327, 3327, 3329, 3334, 3330, 3331, 3331, 3328, 3332, 3332,
+     3338, 3323, 3335, 3335, 3326, 3329, 3330, 3339, 3334, 3340,
+     3339, 3341, 3341, 3342, 3344, 3345, 3346, 3344, 3338, 3347,
+     3348, 3345, 3349, 3352, 3347, 3350, 3360, 3353, 3356, 3352,
+
+     3346, 3342, 3356, 3357, 3361, 3340, 3353, 3370, 3374, 3348,
+     3349, 3350, 3370, 3371, 3375, 3375, 3371, 3380, 3357, 3376,
+     3376, 3374, 3360, 3381, 3361, 3378, 3378, 3382, 3383, 3385,
+     3387, 3382, 3381, 3388, 3389, 3390, 3391, 3390, 3394, 3389,
+     3380, 3392, 3392, 3385, 3388, 3393, 3395, 3396, 3383, 3397,
+     3398, 3391, 3399, 3387, 3400, 3401, 3402, 3394, 3393, 3404,
+     3401, 3399, 3403, 3396, 3395, 3398, 3400, 3403, 3405, 3405,
+     3406, 3407, 3411, 3412, 3397, 3414, 3407, 3402, 3404, 3413,
+     3413, 3415, 3415, 3419, 3414, 3420, 3411, 3416, 3416, 3424,
+     3406, 3417, 3417, 3412, 3418, 3418, 3421, 3425, 3422, 3421,
+
+     3436, 3423, 3419, 3422, 3426, 3420, 3423, 3427, 3428, 3431,
+     3426, 3429, 3425, 3437, 3424, 3436, 3429, 3430, 3430, 3440,
+     3428, 3427, 3432, 3432, 3433, 3433, 3435, 3435, 3442, 3431,
+     3438, 3438, 3437, 3447, 3440, 3445, 3445, 3446, 3446, 3448,
+     3451, 3447, 3449, 3450, 3452, 3453, 3442, 3454, 3449, 3450,
+     3455, 3455, 3454, 3461, 3451, 3457, 3457, 3452, 3448, 3462,
+     3467, 3464, 3465, 3468, 3453, 3469, 3465, 3472, 3468, 3470,
+     3471, 3473, 3474, 3478, 3461, 3464, 3473, 3474, 3479, 3462,
+     3467, 3480, 3470, 3471, 3469, 3483, 3472, 3475, 3475, 3481,
+     3481, 3483, 3482, 3478, 3484, 3484, 3479, 3482, 3485, 3486,
+
+     3480, 3487, 3488, 3485, 3486, 3489, 3487, 3491, 3491, 3492,
+     3496, 3489, 3493, 3493, 3492, 3495, 3497, 3498, 3499, 3495,
+     3500, 3488, 3501, 3497, 3509, 3502, 3500, 3504, 3504, 3496,
+     3506, 3506, 3510, 3507, 3508, 3511, 3498, 3499, 3502, 3508,
+     3514, 3501, 3507, 3509, 3513, 3507, 3512, 3512, 3511, 3513,
+     3516, 3510, 3518, 3514, 3517, 3517, 3519, 3519, 3520, 3520,
+     3521, 3522, 3523, 3524, 3524, 3521,    0, 3525, 3522, 3527,
+     3527, 3518, 3525, 3526, 3530, 3526, 3516, 3528, 3529, 3532,
+     3535, 3523, 3531, 3539, 3528, 3529, 3537, 3531, 3534, 3534,
+     3538, 3537, 3540, 3530, 3544, 3538, 3541, 3541, 3532, 3535,
+
+     3543, 3543, 3539, 3545, 3546, 3546, 3547, 3547, 3548, 3550,
+     3550, 3540, 3552, 3544, 3558, 3548, 3551, 3551, 3554, 3552,
+     3557, 3559, 3545, 3554,    0, 3557, 3560, 3560, 3561, 3561,
+        0,    0,    0, 3558,    0,    0,    0,    0,    0,    0,
+     3559, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3566, 3566,
+     3566, 3566, 3566, 3566, 3566, 3567, 3567, 3567, 3567, 3567,
+     3567, 3567, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3569,
+     3569, 3569, 3569, 3569, 3569, 3569, 3570, 3570, 3570, 3570,
+     3570, 3570, 3570, 3571, 3571, 3571, 3571, 3571, 3571, 3571,
+     3573, 3573,    0, 3573, 3573, 3573, 3573, 3574, 3574,    0,
+
+        0,    0, 3574, 3574, 3575, 3575,    0,    0, 3575,    0,
+     3575, 3576,    0,    0,    0,    0,    0, 3576, 3577, 3577,
+        0,    0,    0, 3577, 3577, 3578,    0,    0,    0,    0,
+        0, 3578, 3579, 3579,    0, 3579, 3579, 3579, 3579, 3580,
+        0,    0,    0,    0,    0, 3580, 3581, 3581,    0,    0,
+        0, 3581, 3581, 3582, 3582,    0, 3582, 3582, 3582, 3582,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
+
+     3564
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -3339,7 +3348,7 @@ static void config_end_include(void)
         }
 #endif
 
-#line 3340 "<stdout>"
+#line 3349 "<stdout>"
 #define YY_NO_INPUT 1
 #line 191 "./util/configlexer.lex"
 #ifndef YY_NO_UNPUT
@@ -3348,9 +3357,9 @@ static void config_end_include(void)
 #ifndef YY_NO_INPUT
 #define YY_NO_INPUT 1
 #endif
-#line 3349 "<stdout>"
+#line 3358 "<stdout>"
 
-#line 3351 "<stdout>"
+#line 3360 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -3574,7 +3583,7 @@ YY_DECL
        {
 #line 211 "./util/configlexer.lex"
 
-#line 3575 "<stdout>"
+#line 3584 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -3607,13 +3616,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 >= 3558 )
+                               if ( yy_current_state >= 3565 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 6947 );
+               while ( yy_base[yy_current_state] != 6961 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -3943,217 +3952,217 @@ YY_RULE_SETUP
 case 61:
 YY_RULE_SETUP
 #line 275 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SO_RCVBUF) }
+{ YDVAR(1, VAR_INTERFACE_AUTOMATIC_PORTS) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 276 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SO_SNDBUF) }
+{ YDVAR(1, VAR_SO_RCVBUF) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 277 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SO_REUSEPORT) }
+{ YDVAR(1, VAR_SO_SNDBUF) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 278 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_TRANSPARENT) }
+{ YDVAR(1, VAR_SO_REUSEPORT) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 279 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_FREEBIND) }
+{ YDVAR(1, VAR_IP_TRANSPARENT) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 280 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_DSCP) }
+{ YDVAR(1, VAR_IP_FREEBIND) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 281 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CHROOT) }
+{ YDVAR(1, VAR_IP_DSCP) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 282 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USERNAME) }
+{ YDVAR(1, VAR_CHROOT) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 283 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DIRECTORY) }
+{ YDVAR(1, VAR_USERNAME) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 284 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOGFILE) }
+{ YDVAR(1, VAR_DIRECTORY) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 285 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PIDFILE) }
+{ YDVAR(1, VAR_LOGFILE) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 286 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_HINTS) }
+{ YDVAR(1, VAR_PIDFILE) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 287 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STREAM_WAIT_SIZE) }
+{ YDVAR(1, VAR_ROOT_HINTS) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 288 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
+{ YDVAR(1, VAR_STREAM_WAIT_SIZE) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 289 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
+{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 290 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 291 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
+{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 292 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 293 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
+{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 294 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_TTL) }
+{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 295 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_TTL) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 296 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MIN_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 297 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_HOST_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_TTL) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 298 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_LAME_TTL) }
+{ YDVAR(1, VAR_INFRA_HOST_TTL) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 299 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
+{ YDVAR(1, VAR_INFRA_LAME_TTL) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 300 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
+{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 301 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 302 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
+{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 303 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_KEEP_PROBING) }
+{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 304 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_KEEP_PROBING) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 305 "./util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 306 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DELAY_CLOSE) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 307 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_CONNECT) }
+{ YDVAR(1, VAR_DELAY_CLOSE) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 308 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_UDP_CONNECT) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 309 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 310 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 311 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 312 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 313 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 314 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 315 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 316 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 317 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CAPS_WHITELIST) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
@@ -4163,72 +4172,72 @@ YY_RULE_SETUP
 case 105:
 YY_RULE_SETUP
 #line 319 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_CAPS_WHITELIST) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 320 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 321 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 322 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 323 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 324 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DENY_ANY) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 325 "./util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_DENY_ANY) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 326 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 327 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 328 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 329 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 330 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 331 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_NO_CACHE) }
+{ YDVAR(1, VAR_STUB_FIRST) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 332 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_STUB_NO_CACHE) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
@@ -4238,37 +4247,37 @@ YY_RULE_SETUP
 case 120:
 YY_RULE_SETUP
 #line 334 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) }
+{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 335 "./util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 336 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 337 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 339 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_NO_CACHE) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 340 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_FORWARD_NO_CACHE) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
@@ -4278,57 +4287,57 @@ YY_RULE_SETUP
 case 128:
 YY_RULE_SETUP
 #line 342 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) }
+{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 343 "./util/configlexer.lex"
-{ YDVAR(0, VAR_AUTH_ZONE) }
+{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 344 "./util/configlexer.lex"
-{ YDVAR(0, VAR_RPZ) }
+{ YDVAR(0, VAR_AUTH_ZONE) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 345 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TAGS) }
+{ YDVAR(0, VAR_RPZ) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 346 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) }
+{ YDVAR(1, VAR_TAGS) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 347 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) }
+{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 348 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_LOG) }
+{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 349 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_LOG_NAME) }
+{ YDVAR(1, VAR_RPZ_LOG) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 350 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) }
+{ YDVAR(1, VAR_RPZ_LOG_NAME) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 351 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEFILE) }
+{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 352 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MASTER) }
+{ YDVAR(1, VAR_ZONEFILE) }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
@@ -4338,751 +4347,751 @@ YY_RULE_SETUP
 case 140:
 YY_RULE_SETUP
 #line 354 "./util/configlexer.lex"
-{ YDVAR(1, VAR_URL) }
+{ YDVAR(1, VAR_MASTER) }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 355 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ALLOW_NOTIFY) }
+{ YDVAR(1, VAR_URL) }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 356 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FOR_DOWNSTREAM) }
+{ YDVAR(1, VAR_ALLOW_NOTIFY) }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 357 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FOR_UPSTREAM) }
+{ YDVAR(1, VAR_FOR_DOWNSTREAM) }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 358 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FALLBACK_ENABLED) }
+{ YDVAR(1, VAR_FOR_UPSTREAM) }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 359 "./util/configlexer.lex"
-{ YDVAR(0, VAR_VIEW) }
+{ YDVAR(1, VAR_FALLBACK_ENABLED) }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 360 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VIEW_FIRST) }
+{ YDVAR(0, VAR_VIEW) }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 361 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_VIEW_FIRST) }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 362 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 363 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 364 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 365 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
+{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 366 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
        YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 367 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
        YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 368 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
        YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 369 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
        YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 370 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
        YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 371 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) }
+{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) }
        YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 372 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) }
+{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) }
        YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 373 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) }
+{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) }
        YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 374 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) }
        YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 375 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 376 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 377 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) }
+{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
        YY_BREAK
 case 164:
 YY_RULE_SETUP
 #line 378 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) }
        YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 379 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 166:
 YY_RULE_SETUP
 #line 380 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HTTP_USER_AGENT) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 167:
 YY_RULE_SETUP
 #line 381 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_HTTP_USER_AGENT) }
        YY_BREAK
 case 168:
 YY_RULE_SETUP
 #line 382 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 169:
 YY_RULE_SETUP
 #line 383 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 170:
 YY_RULE_SETUP
 #line 384 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 171:
 YY_RULE_SETUP
 #line 385 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 172:
 YY_RULE_SETUP
 #line 386 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 173:
 YY_RULE_SETUP
 #line 387 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 174:
 YY_RULE_SETUP
 #line 388 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 175:
 YY_RULE_SETUP
 #line 389 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
        YY_BREAK
 case 176:
 YY_RULE_SETUP
 #line 390 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) }
        YY_BREAK
 case 177:
 YY_RULE_SETUP
 #line 391 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 178:
 YY_RULE_SETUP
 #line 392 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 179:
 YY_RULE_SETUP
 #line 393 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_MAX_RESTART) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 180:
 YY_RULE_SETUP
 #line 394 "./util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_MAX_RESTART) }
        YY_BREAK
 case 181:
 YY_RULE_SETUP
 #line 395 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 182:
 YY_RULE_SETUP
 #line 396 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 183:
 YY_RULE_SETUP
 #line 397 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AGGRESSIVE_NSEC) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 184:
 YY_RULE_SETUP
 #line 398 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_AGGRESSIVE_NSEC) }
        YY_BREAK
 case 185:
 YY_RULE_SETUP
 #line 399 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 186:
 YY_RULE_SETUP
 #line 400 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) }
+{ YDVAR(1, VAR_SERVE_EXPIRED) }
        YY_BREAK
 case 187:
 YY_RULE_SETUP
 #line 401 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) }
        YY_BREAK
 case 188:
 YY_RULE_SETUP
 #line 402 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) }
        YY_BREAK
 case 189:
 YY_RULE_SETUP
 #line 403 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) }
        YY_BREAK
 case 190:
 YY_RULE_SETUP
 #line 404 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) }
        YY_BREAK
 case 191:
 YY_RULE_SETUP
 #line 405 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_DSA) }
+{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) }
        YY_BREAK
 case 192:
 YY_RULE_SETUP
 #line 406 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_SHA1) }
+{ YDVAR(1, VAR_FAKE_DSA) }
        YY_BREAK
 case 193:
 YY_RULE_SETUP
 #line 407 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_FAKE_SHA1) }
        YY_BREAK
 case 194:
 YY_RULE_SETUP
 #line 408 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 195:
 YY_RULE_SETUP
 #line 409 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 196:
 YY_RULE_SETUP
 #line 410 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 197:
 YY_RULE_SETUP
 #line 411 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 413 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) }
+#line 412 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 199:
 YY_RULE_SETUP
 #line 414 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_CHECK) }
+{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) }
        YY_BREAK
 case 200:
 YY_RULE_SETUP
 #line 415 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) }
+{ YDVAR(1, VAR_ZONEMD_CHECK) }
        YY_BREAK
 case 201:
 YY_RULE_SETUP
 #line 416 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) }
        YY_BREAK
 case 202:
 YY_RULE_SETUP
 #line 417 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 203:
 YY_RULE_SETUP
 #line 418 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 204:
 YY_RULE_SETUP
 #line 419 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 205:
 YY_RULE_SETUP
 #line 420 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
        YY_BREAK
 case 206:
 YY_RULE_SETUP
 #line 421 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_IDENTITY) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 207:
 YY_RULE_SETUP
 #line 422 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_LOG_IDENTITY) }
        YY_BREAK
 case 208:
 YY_RULE_SETUP
 #line 423 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 209:
 YY_RULE_SETUP
 #line 424 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_REPLIES) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 210:
 YY_RULE_SETUP
 #line 425 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
+{ YDVAR(1, VAR_LOG_REPLIES) }
        YY_BREAK
 case 211:
 YY_RULE_SETUP
 #line 426 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
+{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
        YY_BREAK
 case 212:
 YY_RULE_SETUP
 #line 427 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_SERVFAIL) }
+{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
        YY_BREAK
 case 213:
 YY_RULE_SETUP
 #line 428 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_SERVFAIL) }
        YY_BREAK
 case 214:
 YY_RULE_SETUP
 #line 429 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 215:
 YY_RULE_SETUP
 #line 430 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 216:
 YY_RULE_SETUP
 #line 431 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 217:
 YY_RULE_SETUP
 #line 432 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 218:
 YY_RULE_SETUP
 #line 433 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
        YY_BREAK
 case 219:
 YY_RULE_SETUP
 #line 434 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 220:
 YY_RULE_SETUP
 #line 435 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 221:
 YY_RULE_SETUP
 #line 436 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_ENABLE) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 222:
 YY_RULE_SETUP
 #line 437 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_KEY) }
+{ YDVAR(1, VAR_SHM_ENABLE) }
        YY_BREAK
 case 223:
 YY_RULE_SETUP
 #line 438 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_SHM_KEY) }
        YY_BREAK
 case 224:
 YY_RULE_SETUP
 #line 439 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 225:
 YY_RULE_SETUP
 #line 440 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 226:
 YY_RULE_SETUP
 #line 441 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 227:
 YY_RULE_SETUP
 #line 442 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 228:
 YY_RULE_SETUP
 #line 443 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 229:
 YY_RULE_SETUP
 #line 444 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 230:
 YY_RULE_SETUP
 #line 445 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 231:
 YY_RULE_SETUP
 #line 446 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 232:
 YY_RULE_SETUP
 #line 447 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 233:
 YY_RULE_SETUP
 #line 448 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 234:
 YY_RULE_SETUP
 #line 449 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DYNLIB_FILE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 235:
 YY_RULE_SETUP
 #line 450 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DYNLIB) }
+{ YDVAR(1, VAR_DYNLIB_FILE) }
        YY_BREAK
 case 236:
 YY_RULE_SETUP
 #line 451 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_DYNLIB) }
        YY_BREAK
 case 237:
 YY_RULE_SETUP
 #line 452 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 238:
 YY_RULE_SETUP
 #line 453 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 239:
 YY_RULE_SETUP
 #line 454 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 240:
 YY_RULE_SETUP
 #line 455 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
        YY_BREAK
 case 241:
 YY_RULE_SETUP
 #line 456 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 242:
 YY_RULE_SETUP
 #line 457 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 243:
 YY_RULE_SETUP
 #line 458 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 244:
 YY_RULE_SETUP
 #line 459 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEFINE_TAG) }
+{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
        YY_BREAK
 case 245:
 YY_RULE_SETUP
 #line 460 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
+{ YDVAR(1, VAR_DEFINE_TAG) }
        YY_BREAK
 case 246:
 YY_RULE_SETUP
 #line 461 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
        YY_BREAK
 case 247:
 YY_RULE_SETUP
 #line 462 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
        YY_BREAK
 case 248:
 YY_RULE_SETUP
 #line 463 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
        YY_BREAK
 case 249:
 YY_RULE_SETUP
 #line 464 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
        YY_BREAK
 case 250:
 YY_RULE_SETUP
 #line 465 "./util/configlexer.lex"
-{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
        YY_BREAK
 case 251:
 YY_RULE_SETUP
 #line 466 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
        YY_BREAK
 case 252:
 YY_RULE_SETUP
 #line 467 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 253:
 YY_RULE_SETUP
 #line 468 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 254:
 YY_RULE_SETUP
 #line 469 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
        YY_BREAK
 case 255:
 YY_RULE_SETUP
 #line 470 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IP) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 256:
 YY_RULE_SETUP
 #line 471 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS) }
+{ YDVAR(1, VAR_DNSTAP_IP) }
        YY_BREAK
 case 257:
 YY_RULE_SETUP
 #line 472 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
+{ YDVAR(1, VAR_DNSTAP_TLS) }
        YY_BREAK
 case 258:
 YY_RULE_SETUP
 #line 473 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
+{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
        YY_BREAK
 case 259:
 YY_RULE_SETUP
 #line 474 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
+{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
        YY_BREAK
 case 260:
 YY_RULE_SETUP
-#line 476 "./util/configlexer.lex"
+#line 475 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
+               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
        YY_BREAK
 case 261:
 YY_RULE_SETUP
-#line 478 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+#line 477 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
        YY_BREAK
 case 262:
 YY_RULE_SETUP
 #line 479 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 263:
 YY_RULE_SETUP
 #line 480 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 264:
 YY_RULE_SETUP
 #line 481 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 265:
 YY_RULE_SETUP
 #line 482 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 266:
 YY_RULE_SETUP
-#line 484 "./util/configlexer.lex"
+#line 483 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 267:
 YY_RULE_SETUP
-#line 486 "./util/configlexer.lex"
+#line 485 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 268:
 YY_RULE_SETUP
-#line 488 "./util/configlexer.lex"
+#line 487 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 269:
 YY_RULE_SETUP
-#line 490 "./util/configlexer.lex"
+#line 489 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 270:
 YY_RULE_SETUP
-#line 492 "./util/configlexer.lex"
+#line 491 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 271:
 YY_RULE_SETUP
-#line 494 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 493 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 272:
 YY_RULE_SETUP
 #line 495 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
        YY_BREAK
 case 273:
 YY_RULE_SETUP
 #line 496 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+{ YDVAR(1, VAR_IP_RATELIMIT) }
        YY_BREAK
 case 274:
 YY_RULE_SETUP
 #line 497 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 275:
 YY_RULE_SETUP
 #line 498 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
        YY_BREAK
 case 276:
 YY_RULE_SETUP
 #line 499 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 277:
 YY_RULE_SETUP
 #line 500 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
        YY_BREAK
 case 278:
 YY_RULE_SETUP
 #line 501 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 279:
 YY_RULE_SETUP
 #line 502 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 280:
 YY_RULE_SETUP
 #line 503 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 281:
 YY_RULE_SETUP
 #line 504 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
        YY_BREAK
 case 282:
 YY_RULE_SETUP
 #line 505 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
        YY_BREAK
 case 283:
 YY_RULE_SETUP
 #line 506 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_BACKOFF) }
+{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
        YY_BREAK
 case 284:
 YY_RULE_SETUP
 #line 507 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
+{ YDVAR(1, VAR_RATELIMIT_BACKOFF) }
        YY_BREAK
 case 285:
 YY_RULE_SETUP
 #line 508 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOW_RTT) }
+{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
        YY_BREAK
 case 286:
 YY_RULE_SETUP
 #line 509 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_NUM) }
+{ YDVAR(1, VAR_LOW_RTT) }
        YY_BREAK
 case 287:
 YY_RULE_SETUP
 #line 510 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_FAST_SERVER_NUM) }
        YY_BREAK
 case 288:
 YY_RULE_SETUP
@@ -5097,119 +5106,119 @@ YY_RULE_SETUP
 case 290:
 YY_RULE_SETUP
 #line 513 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
        YY_BREAK
 case 291:
 YY_RULE_SETUP
 #line 514 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP) }
+{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
        YY_BREAK
 case 292:
 YY_RULE_SETUP
 #line 515 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
+{ YDVAR(2, VAR_RESPONSE_IP) }
        YY_BREAK
 case 293:
 YY_RULE_SETUP
 #line 516 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSCRYPT) }
+{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
        YY_BREAK
 case 294:
 YY_RULE_SETUP
 #line 517 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
+{ YDVAR(0, VAR_DNSCRYPT) }
        YY_BREAK
 case 295:
 YY_RULE_SETUP
 #line 518 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PORT) }
+{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
        YY_BREAK
 case 296:
 YY_RULE_SETUP
 #line 519 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
+{ YDVAR(1, VAR_DNSCRYPT_PORT) }
        YY_BREAK
 case 297:
 YY_RULE_SETUP
 #line 520 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
        YY_BREAK
 case 298:
 YY_RULE_SETUP
 #line 521 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
+{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
        YY_BREAK
 case 299:
 YY_RULE_SETUP
 #line 522 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
        YY_BREAK
 case 300:
 YY_RULE_SETUP
 #line 523 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
        YY_BREAK
 case 301:
 YY_RULE_SETUP
-#line 525 "./util/configlexer.lex"
+#line 524 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
+               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
        YY_BREAK
 case 302:
 YY_RULE_SETUP
-#line 527 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
+#line 526 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
        YY_BREAK
 case 303:
 YY_RULE_SETUP
 #line 528 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
        YY_BREAK
 case 304:
 YY_RULE_SETUP
 #line 529 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
        YY_BREAK
 case 305:
 YY_RULE_SETUP
 #line 530 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
+{ YDVAR(1, VAR_PAD_RESPONSES) }
        YY_BREAK
 case 306:
 YY_RULE_SETUP
 #line 531 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES) }
+{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
        YY_BREAK
 case 307:
 YY_RULE_SETUP
 #line 532 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
+{ YDVAR(1, VAR_PAD_QUERIES) }
        YY_BREAK
 case 308:
 YY_RULE_SETUP
 #line 533 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
+{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
        YY_BREAK
 case 309:
 YY_RULE_SETUP
 #line 534 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
        YY_BREAK
 case 310:
 YY_RULE_SETUP
 #line 535 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
        YY_BREAK
 case 311:
 YY_RULE_SETUP
 #line 536 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
        YY_BREAK
 case 312:
 YY_RULE_SETUP
 #line 537 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
        YY_BREAK
 case 313:
 YY_RULE_SETUP
@@ -5219,118 +5228,123 @@ YY_RULE_SETUP
 case 314:
 YY_RULE_SETUP
 #line 539 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
        YY_BREAK
 case 315:
 YY_RULE_SETUP
 #line 540 "./util/configlexer.lex"
-{ YDVAR(0, VAR_CACHEDB) }
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
        YY_BREAK
 case 316:
 YY_RULE_SETUP
 #line 541 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_BACKEND) }
+{ YDVAR(0, VAR_CACHEDB) }
        YY_BREAK
 case 317:
 YY_RULE_SETUP
 #line 542 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
+{ YDVAR(1, VAR_CACHEDB_BACKEND) }
        YY_BREAK
 case 318:
 YY_RULE_SETUP
 #line 543 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
+{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
        YY_BREAK
 case 319:
 YY_RULE_SETUP
 #line 544 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
+{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
        YY_BREAK
 case 320:
 YY_RULE_SETUP
 #line 545 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
+{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
        YY_BREAK
 case 321:
 YY_RULE_SETUP
 #line 546 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
+{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
        YY_BREAK
 case 322:
 YY_RULE_SETUP
 #line 547 "./util/configlexer.lex"
-{ YDVAR(0, VAR_IPSET) }
+{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
        YY_BREAK
 case 323:
 YY_RULE_SETUP
 #line 548 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V4) }
+{ YDVAR(0, VAR_IPSET) }
        YY_BREAK
 case 324:
 YY_RULE_SETUP
 #line 549 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V6) }
+{ YDVAR(1, VAR_IPSET_NAME_V4) }
        YY_BREAK
 case 325:
 YY_RULE_SETUP
 #line 550 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
+{ YDVAR(1, VAR_IPSET_NAME_V6) }
        YY_BREAK
 case 326:
 YY_RULE_SETUP
 #line 551 "./util/configlexer.lex"
-{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
+{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
        YY_BREAK
 case 327:
 YY_RULE_SETUP
 #line 552 "./util/configlexer.lex"
-{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
+{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
        YY_BREAK
 case 328:
 YY_RULE_SETUP
 #line 553 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
+{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
        YY_BREAK
 case 329:
 YY_RULE_SETUP
 #line 554 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NSID ) }
+{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
        YY_BREAK
 case 330:
-/* rule 330 can match eol */
 YY_RULE_SETUP
 #line 555 "./util/configlexer.lex"
+{ YDVAR(1, VAR_NSID ) }
+       YY_BREAK
+case 331:
+/* rule 331 can match eol */
+YY_RULE_SETUP
+#line 556 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 331:
+case 332:
 YY_RULE_SETUP
-#line 558 "./util/configlexer.lex"
+#line 559 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 559 "./util/configlexer.lex"
+#line 560 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 332:
+case 333:
 YY_RULE_SETUP
-#line 564 "./util/configlexer.lex"
+#line 565 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 333:
-/* rule 333 can match eol */
+case 334:
+/* rule 334 can match eol */
 YY_RULE_SETUP
-#line 565 "./util/configlexer.lex"
+#line 566 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 334:
+case 335:
 YY_RULE_SETUP
-#line 567 "./util/configlexer.lex"
+#line 568 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5343,34 +5357,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 335:
+case 336:
 YY_RULE_SETUP
-#line 579 "./util/configlexer.lex"
+#line 580 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 580 "./util/configlexer.lex"
+#line 581 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 336:
+case 337:
 YY_RULE_SETUP
-#line 585 "./util/configlexer.lex"
+#line 586 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 337:
-/* rule 337 can match eol */
+case 338:
+/* rule 338 can match eol */
 YY_RULE_SETUP
-#line 586 "./util/configlexer.lex"
+#line 587 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 338:
+case 339:
 YY_RULE_SETUP
-#line 588 "./util/configlexer.lex"
+#line 589 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5383,38 +5397,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 339:
+case 340:
 YY_RULE_SETUP
-#line 600 "./util/configlexer.lex"
+#line 601 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 602 "./util/configlexer.lex"
+#line 603 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 340:
-YY_RULE_SETUP
-#line 606 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 341:
-/* rule 341 can match eol */
 YY_RULE_SETUP
 #line 607 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 342:
+/* rule 342 can match eol */
 YY_RULE_SETUP
 #line 608 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 343:
 YY_RULE_SETUP
 #line 609 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 344:
+YY_RULE_SETUP
+#line 610 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 0);
@@ -5422,27 +5436,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 614 "./util/configlexer.lex"
+#line 615 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 344:
+case 345:
 YY_RULE_SETUP
-#line 618 "./util/configlexer.lex"
+#line 619 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 345:
-/* rule 345 can match eol */
+case 346:
+/* rule 346 can match eol */
 YY_RULE_SETUP
-#line 619 "./util/configlexer.lex"
+#line 620 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 346:
+case 347:
 YY_RULE_SETUP
-#line 621 "./util/configlexer.lex"
+#line 622 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -5452,7 +5466,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 627 "./util/configlexer.lex"
+#line 628 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -5467,39 +5481,39 @@ case YY_STATE_EOF(val):
 }
        YY_BREAK
 /* include-toplevel: directive */
-case 347:
+case 348:
 YY_RULE_SETUP
-#line 641 "./util/configlexer.lex"
+#line 642 "./util/configlexer.lex"
 {
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel);
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel):
-#line 644 "./util/configlexer.lex"
+#line 645 "./util/configlexer.lex"
 {
        yyerror("EOF inside include_toplevel directive");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 348:
-YY_RULE_SETUP
-#line 648 "./util/configlexer.lex"
-{ LEXOUT(("ITSP ")); /* ignore */ }
-       YY_BREAK
 case 349:
-/* rule 349 can match eol */
 YY_RULE_SETUP
 #line 649 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++; }
+{ LEXOUT(("ITSP ")); /* ignore */ }
        YY_BREAK
 case 350:
+/* rule 350 can match eol */
 YY_RULE_SETUP
 #line 650 "./util/configlexer.lex"
-{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 case 351:
 YY_RULE_SETUP
 #line 651 "./util/configlexer.lex"
+{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
+       YY_BREAK
+case 352:
+YY_RULE_SETUP
+#line 652 "./util/configlexer.lex"
 {
        LEXOUT(("ITunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 1);
@@ -5508,29 +5522,29 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel_quoted):
-#line 657 "./util/configlexer.lex"
+#line 658 "./util/configlexer.lex"
 {
        yyerror("EOF inside quoted string");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 352:
+case 353:
 YY_RULE_SETUP
-#line 661 "./util/configlexer.lex"
+#line 662 "./util/configlexer.lex"
 { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 353:
-/* rule 353 can match eol */
+case 354:
+/* rule 354 can match eol */
 YY_RULE_SETUP
-#line 662 "./util/configlexer.lex"
+#line 663 "./util/configlexer.lex"
 {
        yyerror("newline before \" in include name");
        cfg_parser->line++; BEGIN(inc_prev);
 }
        YY_BREAK
-case 354:
+case 355:
 YY_RULE_SETUP
-#line 666 "./util/configlexer.lex"
+#line 667 "./util/configlexer.lex"
 {
        LEXOUT(("ITQE "));
        yytext[yyleng - 1] = '\0';
@@ -5539,33 +5553,33 @@ YY_RULE_SETUP
        return (VAR_FORCE_TOPLEVEL);
 }
        YY_BREAK
-case 355:
+case 356:
 YY_RULE_SETUP
-#line 674 "./util/configlexer.lex"
+#line 675 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 356:
+case 357:
 YY_RULE_SETUP
-#line 678 "./util/configlexer.lex"
+#line 679 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 357:
+case 358:
 YY_RULE_SETUP
-#line 682 "./util/configlexer.lex"
+#line 683 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 358:
+case 359:
 YY_RULE_SETUP
-#line 686 "./util/configlexer.lex"
+#line 687 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 5566 "<stdout>"
+#line 5580 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -5860,7 +5874,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 3558 )
+                       if ( yy_current_state >= 3565 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5888,11 +5902,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 >= 3558 )
+               if ( yy_current_state >= 3565 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 3557);
+       yy_is_jam = (yy_current_state == 3564);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6531,6 +6545,6 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 686 "./util/configlexer.lex"
+#line 687 "./util/configlexer.lex"
 
 
index 34a0e5dd9cb033ddb875184f2b3a6c4e801de4cf..93390ca9d6e54eda53069a0a84cdfd02acfc8371 100644 (file)
@@ -272,6 +272,7 @@ interface{COLON}            { YDVAR(1, VAR_INTERFACE) }
 ip-address{COLON}              { YDVAR(1, VAR_INTERFACE) }
 outgoing-interface{COLON}      { YDVAR(1, VAR_OUTGOING_INTERFACE) }
 interface-automatic{COLON}     { YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
+interface-automatic-ports{COLON} { YDVAR(1, VAR_INTERFACE_AUTOMATIC_PORTS) }
 so-rcvbuf{COLON}               { YDVAR(1, VAR_SO_RCVBUF) }
 so-sndbuf{COLON}               { YDVAR(1, VAR_SO_SNDBUF) }
 so-reuseport{COLON}            { YDVAR(1, VAR_SO_REUSEPORT) }
index 4f534cdf5d8bf2321843722762fad8010dfe070f..3a5ee57fc3223b965fe6cea18f9d4675c9cbbd7c 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
-/* Identify Bison output, and Bison version.  */
-#define YYBISON 30706
+/* Identify Bison output.  */
+#define YYBISON 1
 
-/* Bison version string.  */
-#define YYBISON_VERSION "3.7.6"
+/* Bison version.  */
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -119,7 +119,701 @@ extern struct config_parser_state* cfg_parser;
 #  endif
 # endif
 
-#include "configparser.h"
+/* Use api.header.include to #include this header
+   instead of duplicating it here.  */
+#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
+# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token kinds.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    SPACE = 258,                   /* SPACE  */
+    LETTER = 259,                  /* LETTER  */
+    NEWLINE = 260,                 /* NEWLINE  */
+    COMMENT = 261,                 /* COMMENT  */
+    COLON = 262,                   /* COLON  */
+    ANY = 263,                     /* ANY  */
+    ZONESTR = 264,                 /* ZONESTR  */
+    STRING_ARG = 265,              /* STRING_ARG  */
+    VAR_FORCE_TOPLEVEL = 266,      /* VAR_FORCE_TOPLEVEL  */
+    VAR_SERVER = 267,              /* VAR_SERVER  */
+    VAR_VERBOSITY = 268,           /* VAR_VERBOSITY  */
+    VAR_NUM_THREADS = 269,         /* VAR_NUM_THREADS  */
+    VAR_PORT = 270,                /* VAR_PORT  */
+    VAR_OUTGOING_RANGE = 271,      /* VAR_OUTGOING_RANGE  */
+    VAR_INTERFACE = 272,           /* VAR_INTERFACE  */
+    VAR_PREFER_IP4 = 273,          /* VAR_PREFER_IP4  */
+    VAR_DO_IP4 = 274,              /* VAR_DO_IP4  */
+    VAR_DO_IP6 = 275,              /* VAR_DO_IP6  */
+    VAR_PREFER_IP6 = 276,          /* VAR_PREFER_IP6  */
+    VAR_DO_UDP = 277,              /* VAR_DO_UDP  */
+    VAR_DO_TCP = 278,              /* VAR_DO_TCP  */
+    VAR_TCP_MSS = 279,             /* VAR_TCP_MSS  */
+    VAR_OUTGOING_TCP_MSS = 280,    /* VAR_OUTGOING_TCP_MSS  */
+    VAR_TCP_IDLE_TIMEOUT = 281,    /* VAR_TCP_IDLE_TIMEOUT  */
+    VAR_EDNS_TCP_KEEPALIVE = 282,  /* VAR_EDNS_TCP_KEEPALIVE  */
+    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
+    VAR_CHROOT = 284,              /* VAR_CHROOT  */
+    VAR_USERNAME = 285,            /* VAR_USERNAME  */
+    VAR_DIRECTORY = 286,           /* VAR_DIRECTORY  */
+    VAR_LOGFILE = 287,             /* VAR_LOGFILE  */
+    VAR_PIDFILE = 288,             /* VAR_PIDFILE  */
+    VAR_MSG_CACHE_SIZE = 289,      /* VAR_MSG_CACHE_SIZE  */
+    VAR_MSG_CACHE_SLABS = 290,     /* VAR_MSG_CACHE_SLABS  */
+    VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD  */
+    VAR_RRSET_CACHE_SIZE = 292,    /* VAR_RRSET_CACHE_SIZE  */
+    VAR_RRSET_CACHE_SLABS = 293,   /* VAR_RRSET_CACHE_SLABS  */
+    VAR_OUTGOING_NUM_TCP = 294,    /* VAR_OUTGOING_NUM_TCP  */
+    VAR_INFRA_HOST_TTL = 295,      /* VAR_INFRA_HOST_TTL  */
+    VAR_INFRA_LAME_TTL = 296,      /* VAR_INFRA_LAME_TTL  */
+    VAR_INFRA_CACHE_SLABS = 297,   /* VAR_INFRA_CACHE_SLABS  */
+    VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS  */
+    VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE  */
+    VAR_NAME = 300,                /* VAR_NAME  */
+    VAR_STUB_ZONE = 301,           /* VAR_STUB_ZONE  */
+    VAR_STUB_HOST = 302,           /* VAR_STUB_HOST  */
+    VAR_STUB_ADDR = 303,           /* VAR_STUB_ADDR  */
+    VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY  */
+    VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE  */
+    VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES  */
+    VAR_FORWARD_ZONE = 307,        /* VAR_FORWARD_ZONE  */
+    VAR_FORWARD_HOST = 308,        /* VAR_FORWARD_HOST  */
+    VAR_FORWARD_ADDR = 309,        /* VAR_FORWARD_ADDR  */
+    VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS  */
+    VAR_HIDE_IDENTITY = 311,       /* VAR_HIDE_IDENTITY  */
+    VAR_HIDE_VERSION = 312,        /* VAR_HIDE_VERSION  */
+    VAR_IDENTITY = 313,            /* VAR_IDENTITY  */
+    VAR_VERSION = 314,             /* VAR_VERSION  */
+    VAR_HARDEN_GLUE = 315,         /* VAR_HARDEN_GLUE  */
+    VAR_MODULE_CONF = 316,         /* VAR_MODULE_CONF  */
+    VAR_TRUST_ANCHOR_FILE = 317,   /* VAR_TRUST_ANCHOR_FILE  */
+    VAR_TRUST_ANCHOR = 318,        /* VAR_TRUST_ANCHOR  */
+    VAR_VAL_OVERRIDE_DATE = 319,   /* VAR_VAL_OVERRIDE_DATE  */
+    VAR_BOGUS_TTL = 320,           /* VAR_BOGUS_TTL  */
+    VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL  */
+    VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE  */
+    VAR_INCOMING_NUM_TCP = 323,    /* VAR_INCOMING_NUM_TCP  */
+    VAR_MSG_BUFFER_SIZE = 324,     /* VAR_MSG_BUFFER_SIZE  */
+    VAR_KEY_CACHE_SIZE = 325,      /* VAR_KEY_CACHE_SIZE  */
+    VAR_KEY_CACHE_SLABS = 326,     /* VAR_KEY_CACHE_SLABS  */
+    VAR_TRUSTED_KEYS_FILE = 327,   /* VAR_TRUSTED_KEYS_FILE  */
+    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
+    VAR_USE_SYSLOG = 329,          /* VAR_USE_SYSLOG  */
+    VAR_OUTGOING_INTERFACE = 330,  /* VAR_OUTGOING_INTERFACE  */
+    VAR_ROOT_HINTS = 331,          /* VAR_ROOT_HINTS  */
+    VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST  */
+    VAR_CACHE_MAX_TTL = 333,       /* VAR_CACHE_MAX_TTL  */
+    VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED  */
+    VAR_ACCESS_CONTROL = 335,      /* VAR_ACCESS_CONTROL  */
+    VAR_LOCAL_ZONE = 336,          /* VAR_LOCAL_ZONE  */
+    VAR_LOCAL_DATA = 337,          /* VAR_LOCAL_DATA  */
+    VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC  */
+    VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL  */
+    VAR_DO_DAEMONIZE = 340,        /* VAR_DO_DAEMONIZE  */
+    VAR_USE_CAPS_FOR_ID = 341,     /* VAR_USE_CAPS_FOR_ID  */
+    VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE  */
+    VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT  */
+    VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID  */
+    VAR_DLV_ANCHOR_FILE = 345,     /* VAR_DLV_ANCHOR_FILE  */
+    VAR_DLV_ANCHOR = 346,          /* VAR_DLV_ANCHOR  */
+    VAR_NEG_CACHE_SIZE = 347,      /* VAR_NEG_CACHE_SIZE  */
+    VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH  */
+    VAR_PRIVATE_ADDRESS = 349,     /* VAR_PRIVATE_ADDRESS  */
+    VAR_PRIVATE_DOMAIN = 350,      /* VAR_PRIVATE_DOMAIN  */
+    VAR_REMOTE_CONTROL = 351,      /* VAR_REMOTE_CONTROL  */
+    VAR_CONTROL_ENABLE = 352,      /* VAR_CONTROL_ENABLE  */
+    VAR_CONTROL_INTERFACE = 353,   /* VAR_CONTROL_INTERFACE  */
+    VAR_CONTROL_PORT = 354,        /* VAR_CONTROL_PORT  */
+    VAR_SERVER_KEY_FILE = 355,     /* VAR_SERVER_KEY_FILE  */
+    VAR_SERVER_CERT_FILE = 356,    /* VAR_SERVER_CERT_FILE  */
+    VAR_CONTROL_KEY_FILE = 357,    /* VAR_CONTROL_KEY_FILE  */
+    VAR_CONTROL_CERT_FILE = 358,   /* VAR_CONTROL_CERT_FILE  */
+    VAR_CONTROL_USE_CERT = 359,    /* VAR_CONTROL_USE_CERT  */
+    VAR_TCP_REUSE_TIMEOUT = 360,   /* VAR_TCP_REUSE_TIMEOUT  */
+    VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES  */
+    VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS  */
+    VAR_LOCAL_DATA_PTR = 363,      /* VAR_LOCAL_DATA_PTR  */
+    VAR_JOSTLE_TIMEOUT = 364,      /* VAR_JOSTLE_TIMEOUT  */
+    VAR_STUB_PRIME = 365,          /* VAR_STUB_PRIME  */
+    VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD  */
+    VAR_LOG_TIME_ASCII = 367,      /* VAR_LOG_TIME_ASCII  */
+    VAR_DOMAIN_INSECURE = 368,     /* VAR_DOMAIN_INSECURE  */
+    VAR_PYTHON = 369,              /* VAR_PYTHON  */
+    VAR_PYTHON_SCRIPT = 370,       /* VAR_PYTHON_SCRIPT  */
+    VAR_VAL_SIG_SKEW_MIN = 371,    /* VAR_VAL_SIG_SKEW_MIN  */
+    VAR_VAL_SIG_SKEW_MAX = 372,    /* VAR_VAL_SIG_SKEW_MAX  */
+    VAR_VAL_MAX_RESTART = 373,     /* VAR_VAL_MAX_RESTART  */
+    VAR_CACHE_MIN_TTL = 374,       /* VAR_CACHE_MIN_TTL  */
+    VAR_VAL_LOG_LEVEL = 375,       /* VAR_VAL_LOG_LEVEL  */
+    VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
+    VAR_KEEP_MISSING = 377,        /* VAR_KEEP_MISSING  */
+    VAR_ADD_HOLDDOWN = 378,        /* VAR_ADD_HOLDDOWN  */
+    VAR_DEL_HOLDDOWN = 379,        /* VAR_DEL_HOLDDOWN  */
+    VAR_SO_RCVBUF = 380,           /* VAR_SO_RCVBUF  */
+    VAR_EDNS_BUFFER_SIZE = 381,    /* VAR_EDNS_BUFFER_SIZE  */
+    VAR_PREFETCH = 382,            /* VAR_PREFETCH  */
+    VAR_PREFETCH_KEY = 383,        /* VAR_PREFETCH_KEY  */
+    VAR_SO_SNDBUF = 384,           /* VAR_SO_SNDBUF  */
+    VAR_SO_REUSEPORT = 385,        /* VAR_SO_REUSEPORT  */
+    VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN  */
+    VAR_IGNORE_CD_FLAG = 387,      /* VAR_IGNORE_CD_FLAG  */
+    VAR_LOG_QUERIES = 388,         /* VAR_LOG_QUERIES  */
+    VAR_LOG_REPLIES = 389,         /* VAR_LOG_REPLIES  */
+    VAR_LOG_LOCAL_ACTIONS = 390,   /* VAR_LOG_LOCAL_ACTIONS  */
+    VAR_TCP_UPSTREAM = 391,        /* VAR_TCP_UPSTREAM  */
+    VAR_SSL_UPSTREAM = 392,        /* VAR_SSL_UPSTREAM  */
+    VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
+    VAR_SSL_SERVICE_KEY = 394,     /* VAR_SSL_SERVICE_KEY  */
+    VAR_SSL_SERVICE_PEM = 395,     /* VAR_SSL_SERVICE_PEM  */
+    VAR_SSL_PORT = 396,            /* VAR_SSL_PORT  */
+    VAR_FORWARD_FIRST = 397,       /* VAR_FORWARD_FIRST  */
+    VAR_STUB_SSL_UPSTREAM = 398,   /* VAR_STUB_SSL_UPSTREAM  */
+    VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM  */
+    VAR_TLS_CERT_BUNDLE = 400,     /* VAR_TLS_CERT_BUNDLE  */
+    VAR_STUB_TCP_UPSTREAM = 401,   /* VAR_STUB_TCP_UPSTREAM  */
+    VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM  */
+    VAR_HTTPS_PORT = 403,          /* VAR_HTTPS_PORT  */
+    VAR_HTTP_ENDPOINT = 404,       /* VAR_HTTP_ENDPOINT  */
+    VAR_HTTP_MAX_STREAMS = 405,    /* VAR_HTTP_MAX_STREAMS  */
+    VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
+    VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
+    VAR_HTTP_NODELAY = 408,        /* VAR_HTTP_NODELAY  */
+    VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
+    VAR_STUB_FIRST = 410,          /* VAR_STUB_FIRST  */
+    VAR_MINIMAL_RESPONSES = 411,   /* VAR_MINIMAL_RESPONSES  */
+    VAR_RRSET_ROUNDROBIN = 412,    /* VAR_RRSET_ROUNDROBIN  */
+    VAR_MAX_UDP_SIZE = 413,        /* VAR_MAX_UDP_SIZE  */
+    VAR_DELAY_CLOSE = 414,         /* VAR_DELAY_CLOSE  */
+    VAR_UDP_CONNECT = 415,         /* VAR_UDP_CONNECT  */
+    VAR_UNBLOCK_LAN_ZONES = 416,   /* VAR_UNBLOCK_LAN_ZONES  */
+    VAR_INSECURE_LAN_ZONES = 417,  /* VAR_INSECURE_LAN_ZONES  */
+    VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT  */
+    VAR_INFRA_KEEP_PROBING = 419,  /* VAR_INFRA_KEEP_PROBING  */
+    VAR_DNS64_PREFIX = 420,        /* VAR_DNS64_PREFIX  */
+    VAR_DNS64_SYNTHALL = 421,      /* VAR_DNS64_SYNTHALL  */
+    VAR_DNS64_IGNORE_AAAA = 422,   /* VAR_DNS64_IGNORE_AAAA  */
+    VAR_DNSTAP = 423,              /* VAR_DNSTAP  */
+    VAR_DNSTAP_ENABLE = 424,       /* VAR_DNSTAP_ENABLE  */
+    VAR_DNSTAP_SOCKET_PATH = 425,  /* VAR_DNSTAP_SOCKET_PATH  */
+    VAR_DNSTAP_IP = 426,           /* VAR_DNSTAP_IP  */
+    VAR_DNSTAP_TLS = 427,          /* VAR_DNSTAP_TLS  */
+    VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME  */
+    VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
+    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
+    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
+    VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY  */
+    VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION  */
+    VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL  */
+    VAR_DNSTAP_IDENTITY = 435,     /* VAR_DNSTAP_IDENTITY  */
+    VAR_DNSTAP_VERSION = 436,      /* VAR_DNSTAP_VERSION  */
+    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
+    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
+    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
+    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
+    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
+    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
+    VAR_RESPONSE_IP_TAG = 443,     /* VAR_RESPONSE_IP_TAG  */
+    VAR_RESPONSE_IP = 444,         /* VAR_RESPONSE_IP  */
+    VAR_RESPONSE_IP_DATA = 445,    /* VAR_RESPONSE_IP_DATA  */
+    VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE  */
+    VAR_IP_TRANSPARENT = 447,      /* VAR_IP_TRANSPARENT  */
+    VAR_IP_DSCP = 448,             /* VAR_IP_DSCP  */
+    VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
+    VAR_IP_RATELIMIT = 450,        /* VAR_IP_RATELIMIT  */
+    VAR_IP_RATELIMIT_SLABS = 451,  /* VAR_IP_RATELIMIT_SLABS  */
+    VAR_IP_RATELIMIT_SIZE = 452,   /* VAR_IP_RATELIMIT_SIZE  */
+    VAR_RATELIMIT = 453,           /* VAR_RATELIMIT  */
+    VAR_RATELIMIT_SLABS = 454,     /* VAR_RATELIMIT_SLABS  */
+    VAR_RATELIMIT_SIZE = 455,      /* VAR_RATELIMIT_SIZE  */
+    VAR_OUTBOUND_MSG_RETRY = 456,  /* VAR_OUTBOUND_MSG_RETRY  */
+    VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN  */
+    VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN  */
+    VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR  */
+    VAR_RATELIMIT_FACTOR = 460,    /* VAR_RATELIMIT_FACTOR  */
+    VAR_IP_RATELIMIT_BACKOFF = 461, /* VAR_IP_RATELIMIT_BACKOFF  */
+    VAR_RATELIMIT_BACKOFF = 462,   /* VAR_RATELIMIT_BACKOFF  */
+    VAR_SEND_CLIENT_SUBNET = 463,  /* VAR_SEND_CLIENT_SUBNET  */
+    VAR_CLIENT_SUBNET_ZONE = 464,  /* VAR_CLIENT_SUBNET_ZONE  */
+    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
+    VAR_CLIENT_SUBNET_OPCODE = 466, /* VAR_CLIENT_SUBNET_OPCODE  */
+    VAR_MAX_CLIENT_SUBNET_IPV4 = 467, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
+    VAR_MAX_CLIENT_SUBNET_IPV6 = 468, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
+    VAR_MIN_CLIENT_SUBNET_IPV4 = 469, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
+    VAR_MIN_CLIENT_SUBNET_IPV6 = 470, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
+    VAR_MAX_ECS_TREE_SIZE_IPV4 = 471, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
+    VAR_MAX_ECS_TREE_SIZE_IPV6 = 472, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
+    VAR_CAPS_WHITELIST = 473,      /* VAR_CAPS_WHITELIST  */
+    VAR_CACHE_MAX_NEGATIVE_TTL = 474, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
+    VAR_PERMIT_SMALL_HOLDDOWN = 475, /* VAR_PERMIT_SMALL_HOLDDOWN  */
+    VAR_QNAME_MINIMISATION = 476,  /* VAR_QNAME_MINIMISATION  */
+    VAR_QNAME_MINIMISATION_STRICT = 477, /* VAR_QNAME_MINIMISATION_STRICT  */
+    VAR_IP_FREEBIND = 478,         /* VAR_IP_FREEBIND  */
+    VAR_DEFINE_TAG = 479,          /* VAR_DEFINE_TAG  */
+    VAR_LOCAL_ZONE_TAG = 480,      /* VAR_LOCAL_ZONE_TAG  */
+    VAR_ACCESS_CONTROL_TAG = 481,  /* VAR_ACCESS_CONTROL_TAG  */
+    VAR_LOCAL_ZONE_OVERRIDE = 482, /* VAR_LOCAL_ZONE_OVERRIDE  */
+    VAR_ACCESS_CONTROL_TAG_ACTION = 483, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
+    VAR_ACCESS_CONTROL_TAG_DATA = 484, /* VAR_ACCESS_CONTROL_TAG_DATA  */
+    VAR_VIEW = 485,                /* VAR_VIEW  */
+    VAR_ACCESS_CONTROL_VIEW = 486, /* VAR_ACCESS_CONTROL_VIEW  */
+    VAR_VIEW_FIRST = 487,          /* VAR_VIEW_FIRST  */
+    VAR_SERVE_EXPIRED = 488,       /* VAR_SERVE_EXPIRED  */
+    VAR_SERVE_EXPIRED_TTL = 489,   /* VAR_SERVE_EXPIRED_TTL  */
+    VAR_SERVE_EXPIRED_TTL_RESET = 490, /* VAR_SERVE_EXPIRED_TTL_RESET  */
+    VAR_SERVE_EXPIRED_REPLY_TTL = 491, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
+    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
+    VAR_SERVE_ORIGINAL_TTL = 493,  /* VAR_SERVE_ORIGINAL_TTL  */
+    VAR_FAKE_DSA = 494,            /* VAR_FAKE_DSA  */
+    VAR_FAKE_SHA1 = 495,           /* VAR_FAKE_SHA1  */
+    VAR_LOG_IDENTITY = 496,        /* VAR_LOG_IDENTITY  */
+    VAR_HIDE_TRUSTANCHOR = 497,    /* VAR_HIDE_TRUSTANCHOR  */
+    VAR_HIDE_HTTP_USER_AGENT = 498, /* VAR_HIDE_HTTP_USER_AGENT  */
+    VAR_HTTP_USER_AGENT = 499,     /* VAR_HTTP_USER_AGENT  */
+    VAR_TRUST_ANCHOR_SIGNALING = 500, /* VAR_TRUST_ANCHOR_SIGNALING  */
+    VAR_AGGRESSIVE_NSEC = 501,     /* VAR_AGGRESSIVE_NSEC  */
+    VAR_USE_SYSTEMD = 502,         /* VAR_USE_SYSTEMD  */
+    VAR_SHM_ENABLE = 503,          /* VAR_SHM_ENABLE  */
+    VAR_SHM_KEY = 504,             /* VAR_SHM_KEY  */
+    VAR_ROOT_KEY_SENTINEL = 505,   /* VAR_ROOT_KEY_SENTINEL  */
+    VAR_DNSCRYPT = 506,            /* VAR_DNSCRYPT  */
+    VAR_DNSCRYPT_ENABLE = 507,     /* VAR_DNSCRYPT_ENABLE  */
+    VAR_DNSCRYPT_PORT = 508,       /* VAR_DNSCRYPT_PORT  */
+    VAR_DNSCRYPT_PROVIDER = 509,   /* VAR_DNSCRYPT_PROVIDER  */
+    VAR_DNSCRYPT_SECRET_KEY = 510, /* VAR_DNSCRYPT_SECRET_KEY  */
+    VAR_DNSCRYPT_PROVIDER_CERT = 511, /* VAR_DNSCRYPT_PROVIDER_CERT  */
+    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 512, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
+    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 513, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
+    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 514, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
+    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 515, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
+    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 516, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
+    VAR_PAD_RESPONSES = 517,       /* VAR_PAD_RESPONSES  */
+    VAR_PAD_RESPONSES_BLOCK_SIZE = 518, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
+    VAR_PAD_QUERIES = 519,         /* VAR_PAD_QUERIES  */
+    VAR_PAD_QUERIES_BLOCK_SIZE = 520, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
+    VAR_IPSECMOD_ENABLED = 521,    /* VAR_IPSECMOD_ENABLED  */
+    VAR_IPSECMOD_HOOK = 522,       /* VAR_IPSECMOD_HOOK  */
+    VAR_IPSECMOD_IGNORE_BOGUS = 523, /* VAR_IPSECMOD_IGNORE_BOGUS  */
+    VAR_IPSECMOD_MAX_TTL = 524,    /* VAR_IPSECMOD_MAX_TTL  */
+    VAR_IPSECMOD_WHITELIST = 525,  /* VAR_IPSECMOD_WHITELIST  */
+    VAR_IPSECMOD_STRICT = 526,     /* VAR_IPSECMOD_STRICT  */
+    VAR_CACHEDB = 527,             /* VAR_CACHEDB  */
+    VAR_CACHEDB_BACKEND = 528,     /* VAR_CACHEDB_BACKEND  */
+    VAR_CACHEDB_SECRETSEED = 529,  /* VAR_CACHEDB_SECRETSEED  */
+    VAR_CACHEDB_REDISHOST = 530,   /* VAR_CACHEDB_REDISHOST  */
+    VAR_CACHEDB_REDISPORT = 531,   /* VAR_CACHEDB_REDISPORT  */
+    VAR_CACHEDB_REDISTIMEOUT = 532, /* VAR_CACHEDB_REDISTIMEOUT  */
+    VAR_CACHEDB_REDISEXPIRERECORDS = 533, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
+    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 534, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
+    VAR_FOR_UPSTREAM = 535,        /* VAR_FOR_UPSTREAM  */
+    VAR_AUTH_ZONE = 536,           /* VAR_AUTH_ZONE  */
+    VAR_ZONEFILE = 537,            /* VAR_ZONEFILE  */
+    VAR_MASTER = 538,              /* VAR_MASTER  */
+    VAR_URL = 539,                 /* VAR_URL  */
+    VAR_FOR_DOWNSTREAM = 540,      /* VAR_FOR_DOWNSTREAM  */
+    VAR_FALLBACK_ENABLED = 541,    /* VAR_FALLBACK_ENABLED  */
+    VAR_TLS_ADDITIONAL_PORT = 542, /* VAR_TLS_ADDITIONAL_PORT  */
+    VAR_LOW_RTT = 543,             /* VAR_LOW_RTT  */
+    VAR_LOW_RTT_PERMIL = 544,      /* VAR_LOW_RTT_PERMIL  */
+    VAR_FAST_SERVER_PERMIL = 545,  /* VAR_FAST_SERVER_PERMIL  */
+    VAR_FAST_SERVER_NUM = 546,     /* VAR_FAST_SERVER_NUM  */
+    VAR_ALLOW_NOTIFY = 547,        /* VAR_ALLOW_NOTIFY  */
+    VAR_TLS_WIN_CERT = 548,        /* VAR_TLS_WIN_CERT  */
+    VAR_TCP_CONNECTION_LIMIT = 549, /* VAR_TCP_CONNECTION_LIMIT  */
+    VAR_FORWARD_NO_CACHE = 550,    /* VAR_FORWARD_NO_CACHE  */
+    VAR_STUB_NO_CACHE = 551,       /* VAR_STUB_NO_CACHE  */
+    VAR_LOG_SERVFAIL = 552,        /* VAR_LOG_SERVFAIL  */
+    VAR_DENY_ANY = 553,            /* VAR_DENY_ANY  */
+    VAR_UNKNOWN_SERVER_TIME_LIMIT = 554, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
+    VAR_LOG_TAG_QUERYREPLY = 555,  /* VAR_LOG_TAG_QUERYREPLY  */
+    VAR_STREAM_WAIT_SIZE = 556,    /* VAR_STREAM_WAIT_SIZE  */
+    VAR_TLS_CIPHERS = 557,         /* VAR_TLS_CIPHERS  */
+    VAR_TLS_CIPHERSUITES = 558,    /* VAR_TLS_CIPHERSUITES  */
+    VAR_TLS_USE_SNI = 559,         /* VAR_TLS_USE_SNI  */
+    VAR_IPSET = 560,               /* VAR_IPSET  */
+    VAR_IPSET_NAME_V4 = 561,       /* VAR_IPSET_NAME_V4  */
+    VAR_IPSET_NAME_V6 = 562,       /* VAR_IPSET_NAME_V6  */
+    VAR_TLS_SESSION_TICKET_KEYS = 563, /* VAR_TLS_SESSION_TICKET_KEYS  */
+    VAR_RPZ = 564,                 /* VAR_RPZ  */
+    VAR_TAGS = 565,                /* VAR_TAGS  */
+    VAR_RPZ_ACTION_OVERRIDE = 566, /* VAR_RPZ_ACTION_OVERRIDE  */
+    VAR_RPZ_CNAME_OVERRIDE = 567,  /* VAR_RPZ_CNAME_OVERRIDE  */
+    VAR_RPZ_LOG = 568,             /* VAR_RPZ_LOG  */
+    VAR_RPZ_LOG_NAME = 569,        /* VAR_RPZ_LOG_NAME  */
+    VAR_DYNLIB = 570,              /* VAR_DYNLIB  */
+    VAR_DYNLIB_FILE = 571,         /* VAR_DYNLIB_FILE  */
+    VAR_EDNS_CLIENT_STRING = 572,  /* VAR_EDNS_CLIENT_STRING  */
+    VAR_EDNS_CLIENT_STRING_OPCODE = 573, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
+    VAR_NSID = 574,                /* VAR_NSID  */
+    VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE  */
+    VAR_ZONEMD_CHECK = 576,        /* VAR_ZONEMD_CHECK  */
+    VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE  */
+    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
+    VAR_INTERFACE_AUTOMATIC_PORTS = 579 /* VAR_INTERFACE_AUTOMATIC_PORTS  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
+#define SPACE 258
+#define LETTER 259
+#define NEWLINE 260
+#define COMMENT 261
+#define COLON 262
+#define ANY 263
+#define ZONESTR 264
+#define STRING_ARG 265
+#define VAR_FORCE_TOPLEVEL 266
+#define VAR_SERVER 267
+#define VAR_VERBOSITY 268
+#define VAR_NUM_THREADS 269
+#define VAR_PORT 270
+#define VAR_OUTGOING_RANGE 271
+#define VAR_INTERFACE 272
+#define VAR_PREFER_IP4 273
+#define VAR_DO_IP4 274
+#define VAR_DO_IP6 275
+#define VAR_PREFER_IP6 276
+#define VAR_DO_UDP 277
+#define VAR_DO_TCP 278
+#define VAR_TCP_MSS 279
+#define VAR_OUTGOING_TCP_MSS 280
+#define VAR_TCP_IDLE_TIMEOUT 281
+#define VAR_EDNS_TCP_KEEPALIVE 282
+#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283
+#define VAR_CHROOT 284
+#define VAR_USERNAME 285
+#define VAR_DIRECTORY 286
+#define VAR_LOGFILE 287
+#define VAR_PIDFILE 288
+#define VAR_MSG_CACHE_SIZE 289
+#define VAR_MSG_CACHE_SLABS 290
+#define VAR_NUM_QUERIES_PER_THREAD 291
+#define VAR_RRSET_CACHE_SIZE 292
+#define VAR_RRSET_CACHE_SLABS 293
+#define VAR_OUTGOING_NUM_TCP 294
+#define VAR_INFRA_HOST_TTL 295
+#define VAR_INFRA_LAME_TTL 296
+#define VAR_INFRA_CACHE_SLABS 297
+#define VAR_INFRA_CACHE_NUMHOSTS 298
+#define VAR_INFRA_CACHE_LAME_SIZE 299
+#define VAR_NAME 300
+#define VAR_STUB_ZONE 301
+#define VAR_STUB_HOST 302
+#define VAR_STUB_ADDR 303
+#define VAR_TARGET_FETCH_POLICY 304
+#define VAR_HARDEN_SHORT_BUFSIZE 305
+#define VAR_HARDEN_LARGE_QUERIES 306
+#define VAR_FORWARD_ZONE 307
+#define VAR_FORWARD_HOST 308
+#define VAR_FORWARD_ADDR 309
+#define VAR_DO_NOT_QUERY_ADDRESS 310
+#define VAR_HIDE_IDENTITY 311
+#define VAR_HIDE_VERSION 312
+#define VAR_IDENTITY 313
+#define VAR_VERSION 314
+#define VAR_HARDEN_GLUE 315
+#define VAR_MODULE_CONF 316
+#define VAR_TRUST_ANCHOR_FILE 317
+#define VAR_TRUST_ANCHOR 318
+#define VAR_VAL_OVERRIDE_DATE 319
+#define VAR_BOGUS_TTL 320
+#define VAR_VAL_CLEAN_ADDITIONAL 321
+#define VAR_VAL_PERMISSIVE_MODE 322
+#define VAR_INCOMING_NUM_TCP 323
+#define VAR_MSG_BUFFER_SIZE 324
+#define VAR_KEY_CACHE_SIZE 325
+#define VAR_KEY_CACHE_SLABS 326
+#define VAR_TRUSTED_KEYS_FILE 327
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328
+#define VAR_USE_SYSLOG 329
+#define VAR_OUTGOING_INTERFACE 330
+#define VAR_ROOT_HINTS 331
+#define VAR_DO_NOT_QUERY_LOCALHOST 332
+#define VAR_CACHE_MAX_TTL 333
+#define VAR_HARDEN_DNSSEC_STRIPPED 334
+#define VAR_ACCESS_CONTROL 335
+#define VAR_LOCAL_ZONE 336
+#define VAR_LOCAL_DATA 337
+#define VAR_INTERFACE_AUTOMATIC 338
+#define VAR_STATISTICS_INTERVAL 339
+#define VAR_DO_DAEMONIZE 340
+#define VAR_USE_CAPS_FOR_ID 341
+#define VAR_STATISTICS_CUMULATIVE 342
+#define VAR_OUTGOING_PORT_PERMIT 343
+#define VAR_OUTGOING_PORT_AVOID 344
+#define VAR_DLV_ANCHOR_FILE 345
+#define VAR_DLV_ANCHOR 346
+#define VAR_NEG_CACHE_SIZE 347
+#define VAR_HARDEN_REFERRAL_PATH 348
+#define VAR_PRIVATE_ADDRESS 349
+#define VAR_PRIVATE_DOMAIN 350
+#define VAR_REMOTE_CONTROL 351
+#define VAR_CONTROL_ENABLE 352
+#define VAR_CONTROL_INTERFACE 353
+#define VAR_CONTROL_PORT 354
+#define VAR_SERVER_KEY_FILE 355
+#define VAR_SERVER_CERT_FILE 356
+#define VAR_CONTROL_KEY_FILE 357
+#define VAR_CONTROL_CERT_FILE 358
+#define VAR_CONTROL_USE_CERT 359
+#define VAR_TCP_REUSE_TIMEOUT 360
+#define VAR_MAX_REUSE_TCP_QUERIES 361
+#define VAR_EXTENDED_STATISTICS 362
+#define VAR_LOCAL_DATA_PTR 363
+#define VAR_JOSTLE_TIMEOUT 364
+#define VAR_STUB_PRIME 365
+#define VAR_UNWANTED_REPLY_THRESHOLD 366
+#define VAR_LOG_TIME_ASCII 367
+#define VAR_DOMAIN_INSECURE 368
+#define VAR_PYTHON 369
+#define VAR_PYTHON_SCRIPT 370
+#define VAR_VAL_SIG_SKEW_MIN 371
+#define VAR_VAL_SIG_SKEW_MAX 372
+#define VAR_VAL_MAX_RESTART 373
+#define VAR_CACHE_MIN_TTL 374
+#define VAR_VAL_LOG_LEVEL 375
+#define VAR_AUTO_TRUST_ANCHOR_FILE 376
+#define VAR_KEEP_MISSING 377
+#define VAR_ADD_HOLDDOWN 378
+#define VAR_DEL_HOLDDOWN 379
+#define VAR_SO_RCVBUF 380
+#define VAR_EDNS_BUFFER_SIZE 381
+#define VAR_PREFETCH 382
+#define VAR_PREFETCH_KEY 383
+#define VAR_SO_SNDBUF 384
+#define VAR_SO_REUSEPORT 385
+#define VAR_HARDEN_BELOW_NXDOMAIN 386
+#define VAR_IGNORE_CD_FLAG 387
+#define VAR_LOG_QUERIES 388
+#define VAR_LOG_REPLIES 389
+#define VAR_LOG_LOCAL_ACTIONS 390
+#define VAR_TCP_UPSTREAM 391
+#define VAR_SSL_UPSTREAM 392
+#define VAR_TCP_AUTH_QUERY_TIMEOUT 393
+#define VAR_SSL_SERVICE_KEY 394
+#define VAR_SSL_SERVICE_PEM 395
+#define VAR_SSL_PORT 396
+#define VAR_FORWARD_FIRST 397
+#define VAR_STUB_SSL_UPSTREAM 398
+#define VAR_FORWARD_SSL_UPSTREAM 399
+#define VAR_TLS_CERT_BUNDLE 400
+#define VAR_STUB_TCP_UPSTREAM 401
+#define VAR_FORWARD_TCP_UPSTREAM 402
+#define VAR_HTTPS_PORT 403
+#define VAR_HTTP_ENDPOINT 404
+#define VAR_HTTP_MAX_STREAMS 405
+#define VAR_HTTP_QUERY_BUFFER_SIZE 406
+#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407
+#define VAR_HTTP_NODELAY 408
+#define VAR_HTTP_NOTLS_DOWNSTREAM 409
+#define VAR_STUB_FIRST 410
+#define VAR_MINIMAL_RESPONSES 411
+#define VAR_RRSET_ROUNDROBIN 412
+#define VAR_MAX_UDP_SIZE 413
+#define VAR_DELAY_CLOSE 414
+#define VAR_UDP_CONNECT 415
+#define VAR_UNBLOCK_LAN_ZONES 416
+#define VAR_INSECURE_LAN_ZONES 417
+#define VAR_INFRA_CACHE_MIN_RTT 418
+#define VAR_INFRA_KEEP_PROBING 419
+#define VAR_DNS64_PREFIX 420
+#define VAR_DNS64_SYNTHALL 421
+#define VAR_DNS64_IGNORE_AAAA 422
+#define VAR_DNSTAP 423
+#define VAR_DNSTAP_ENABLE 424
+#define VAR_DNSTAP_SOCKET_PATH 425
+#define VAR_DNSTAP_IP 426
+#define VAR_DNSTAP_TLS 427
+#define VAR_DNSTAP_TLS_SERVER_NAME 428
+#define VAR_DNSTAP_TLS_CERT_BUNDLE 429
+#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430
+#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431
+#define VAR_DNSTAP_SEND_IDENTITY 432
+#define VAR_DNSTAP_SEND_VERSION 433
+#define VAR_DNSTAP_BIDIRECTIONAL 434
+#define VAR_DNSTAP_IDENTITY 435
+#define VAR_DNSTAP_VERSION 436
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442
+#define VAR_RESPONSE_IP_TAG 443
+#define VAR_RESPONSE_IP 444
+#define VAR_RESPONSE_IP_DATA 445
+#define VAR_HARDEN_ALGO_DOWNGRADE 446
+#define VAR_IP_TRANSPARENT 447
+#define VAR_IP_DSCP 448
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 449
+#define VAR_IP_RATELIMIT 450
+#define VAR_IP_RATELIMIT_SLABS 451
+#define VAR_IP_RATELIMIT_SIZE 452
+#define VAR_RATELIMIT 453
+#define VAR_RATELIMIT_SLABS 454
+#define VAR_RATELIMIT_SIZE 455
+#define VAR_OUTBOUND_MSG_RETRY 456
+#define VAR_RATELIMIT_FOR_DOMAIN 457
+#define VAR_RATELIMIT_BELOW_DOMAIN 458
+#define VAR_IP_RATELIMIT_FACTOR 459
+#define VAR_RATELIMIT_FACTOR 460
+#define VAR_IP_RATELIMIT_BACKOFF 461
+#define VAR_RATELIMIT_BACKOFF 462
+#define VAR_SEND_CLIENT_SUBNET 463
+#define VAR_CLIENT_SUBNET_ZONE 464
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 465
+#define VAR_CLIENT_SUBNET_OPCODE 466
+#define VAR_MAX_CLIENT_SUBNET_IPV4 467
+#define VAR_MAX_CLIENT_SUBNET_IPV6 468
+#define VAR_MIN_CLIENT_SUBNET_IPV4 469
+#define VAR_MIN_CLIENT_SUBNET_IPV6 470
+#define VAR_MAX_ECS_TREE_SIZE_IPV4 471
+#define VAR_MAX_ECS_TREE_SIZE_IPV6 472
+#define VAR_CAPS_WHITELIST 473
+#define VAR_CACHE_MAX_NEGATIVE_TTL 474
+#define VAR_PERMIT_SMALL_HOLDDOWN 475
+#define VAR_QNAME_MINIMISATION 476
+#define VAR_QNAME_MINIMISATION_STRICT 477
+#define VAR_IP_FREEBIND 478
+#define VAR_DEFINE_TAG 479
+#define VAR_LOCAL_ZONE_TAG 480
+#define VAR_ACCESS_CONTROL_TAG 481
+#define VAR_LOCAL_ZONE_OVERRIDE 482
+#define VAR_ACCESS_CONTROL_TAG_ACTION 483
+#define VAR_ACCESS_CONTROL_TAG_DATA 484
+#define VAR_VIEW 485
+#define VAR_ACCESS_CONTROL_VIEW 486
+#define VAR_VIEW_FIRST 487
+#define VAR_SERVE_EXPIRED 488
+#define VAR_SERVE_EXPIRED_TTL 489
+#define VAR_SERVE_EXPIRED_TTL_RESET 490
+#define VAR_SERVE_EXPIRED_REPLY_TTL 491
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 492
+#define VAR_SERVE_ORIGINAL_TTL 493
+#define VAR_FAKE_DSA 494
+#define VAR_FAKE_SHA1 495
+#define VAR_LOG_IDENTITY 496
+#define VAR_HIDE_TRUSTANCHOR 497
+#define VAR_HIDE_HTTP_USER_AGENT 498
+#define VAR_HTTP_USER_AGENT 499
+#define VAR_TRUST_ANCHOR_SIGNALING 500
+#define VAR_AGGRESSIVE_NSEC 501
+#define VAR_USE_SYSTEMD 502
+#define VAR_SHM_ENABLE 503
+#define VAR_SHM_KEY 504
+#define VAR_ROOT_KEY_SENTINEL 505
+#define VAR_DNSCRYPT 506
+#define VAR_DNSCRYPT_ENABLE 507
+#define VAR_DNSCRYPT_PORT 508
+#define VAR_DNSCRYPT_PROVIDER 509
+#define VAR_DNSCRYPT_SECRET_KEY 510
+#define VAR_DNSCRYPT_PROVIDER_CERT 511
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 512
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 513
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 514
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 515
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 516
+#define VAR_PAD_RESPONSES 517
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 518
+#define VAR_PAD_QUERIES 519
+#define VAR_PAD_QUERIES_BLOCK_SIZE 520
+#define VAR_IPSECMOD_ENABLED 521
+#define VAR_IPSECMOD_HOOK 522
+#define VAR_IPSECMOD_IGNORE_BOGUS 523
+#define VAR_IPSECMOD_MAX_TTL 524
+#define VAR_IPSECMOD_WHITELIST 525
+#define VAR_IPSECMOD_STRICT 526
+#define VAR_CACHEDB 527
+#define VAR_CACHEDB_BACKEND 528
+#define VAR_CACHEDB_SECRETSEED 529
+#define VAR_CACHEDB_REDISHOST 530
+#define VAR_CACHEDB_REDISPORT 531
+#define VAR_CACHEDB_REDISTIMEOUT 532
+#define VAR_CACHEDB_REDISEXPIRERECORDS 533
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 534
+#define VAR_FOR_UPSTREAM 535
+#define VAR_AUTH_ZONE 536
+#define VAR_ZONEFILE 537
+#define VAR_MASTER 538
+#define VAR_URL 539
+#define VAR_FOR_DOWNSTREAM 540
+#define VAR_FALLBACK_ENABLED 541
+#define VAR_TLS_ADDITIONAL_PORT 542
+#define VAR_LOW_RTT 543
+#define VAR_LOW_RTT_PERMIL 544
+#define VAR_FAST_SERVER_PERMIL 545
+#define VAR_FAST_SERVER_NUM 546
+#define VAR_ALLOW_NOTIFY 547
+#define VAR_TLS_WIN_CERT 548
+#define VAR_TCP_CONNECTION_LIMIT 549
+#define VAR_FORWARD_NO_CACHE 550
+#define VAR_STUB_NO_CACHE 551
+#define VAR_LOG_SERVFAIL 552
+#define VAR_DENY_ANY 553
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 554
+#define VAR_LOG_TAG_QUERYREPLY 555
+#define VAR_STREAM_WAIT_SIZE 556
+#define VAR_TLS_CIPHERS 557
+#define VAR_TLS_CIPHERSUITES 558
+#define VAR_TLS_USE_SNI 559
+#define VAR_IPSET 560
+#define VAR_IPSET_NAME_V4 561
+#define VAR_IPSET_NAME_V6 562
+#define VAR_TLS_SESSION_TICKET_KEYS 563
+#define VAR_RPZ 564
+#define VAR_TAGS 565
+#define VAR_RPZ_ACTION_OVERRIDE 566
+#define VAR_RPZ_CNAME_OVERRIDE 567
+#define VAR_RPZ_LOG 568
+#define VAR_RPZ_LOG_NAME 569
+#define VAR_DYNLIB 570
+#define VAR_DYNLIB_FILE 571
+#define VAR_EDNS_CLIENT_STRING 572
+#define VAR_EDNS_CLIENT_STRING_OPCODE 573
+#define VAR_NSID 574
+#define VAR_ZONEMD_PERMISSIVE_MODE 575
+#define VAR_ZONEMD_CHECK 576
+#define VAR_ZONEMD_REJECT_ABSENCE 577
+#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578
+#define VAR_INTERFACE_AUTOMATIC_PORTS 579
+
+/* Value type.  */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+union YYSTYPE
+{
+#line 66 "./util/configparser.y"
+
+       char*   str;
+
+#line 804 "util/configparser.c"
+
+};
+typedef union YYSTYPE YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
 /* Symbol kind.  */
 enum yysymbol_kind_t
 {
@@ -448,355 +1142,357 @@ enum yysymbol_kind_t
   YYSYMBOL_VAR_ZONEMD_CHECK = 321,         /* VAR_ZONEMD_CHECK  */
   YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 322, /* VAR_ZONEMD_REJECT_ABSENCE  */
   YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 323, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
-  YYSYMBOL_YYACCEPT = 324,                 /* $accept  */
-  YYSYMBOL_toplevelvars = 325,             /* toplevelvars  */
-  YYSYMBOL_toplevelvar = 326,              /* toplevelvar  */
-  YYSYMBOL_force_toplevel = 327,           /* force_toplevel  */
-  YYSYMBOL_serverstart = 328,              /* serverstart  */
-  YYSYMBOL_contents_server = 329,          /* contents_server  */
-  YYSYMBOL_content_server = 330,           /* content_server  */
-  YYSYMBOL_stubstart = 331,                /* stubstart  */
-  YYSYMBOL_contents_stub = 332,            /* contents_stub  */
-  YYSYMBOL_content_stub = 333,             /* content_stub  */
-  YYSYMBOL_forwardstart = 334,             /* forwardstart  */
-  YYSYMBOL_contents_forward = 335,         /* contents_forward  */
-  YYSYMBOL_content_forward = 336,          /* content_forward  */
-  YYSYMBOL_viewstart = 337,                /* viewstart  */
-  YYSYMBOL_contents_view = 338,            /* contents_view  */
-  YYSYMBOL_content_view = 339,             /* content_view  */
-  YYSYMBOL_authstart = 340,                /* authstart  */
-  YYSYMBOL_contents_auth = 341,            /* contents_auth  */
-  YYSYMBOL_content_auth = 342,             /* content_auth  */
-  YYSYMBOL_rpz_tag = 343,                  /* rpz_tag  */
-  YYSYMBOL_rpz_action_override = 344,      /* rpz_action_override  */
-  YYSYMBOL_rpz_cname_override = 345,       /* rpz_cname_override  */
-  YYSYMBOL_rpz_log = 346,                  /* rpz_log  */
-  YYSYMBOL_rpz_log_name = 347,             /* rpz_log_name  */
-  YYSYMBOL_rpz_signal_nxdomain_ra = 348,   /* rpz_signal_nxdomain_ra  */
-  YYSYMBOL_rpzstart = 349,                 /* rpzstart  */
-  YYSYMBOL_contents_rpz = 350,             /* contents_rpz  */
-  YYSYMBOL_content_rpz = 351,              /* content_rpz  */
-  YYSYMBOL_server_num_threads = 352,       /* server_num_threads  */
-  YYSYMBOL_server_verbosity = 353,         /* server_verbosity  */
-  YYSYMBOL_server_statistics_interval = 354, /* server_statistics_interval  */
-  YYSYMBOL_server_statistics_cumulative = 355, /* server_statistics_cumulative  */
-  YYSYMBOL_server_extended_statistics = 356, /* server_extended_statistics  */
-  YYSYMBOL_server_shm_enable = 357,        /* server_shm_enable  */
-  YYSYMBOL_server_shm_key = 358,           /* server_shm_key  */
-  YYSYMBOL_server_port = 359,              /* server_port  */
-  YYSYMBOL_server_send_client_subnet = 360, /* server_send_client_subnet  */
-  YYSYMBOL_server_client_subnet_zone = 361, /* server_client_subnet_zone  */
-  YYSYMBOL_server_client_subnet_always_forward = 362, /* server_client_subnet_always_forward  */
-  YYSYMBOL_server_client_subnet_opcode = 363, /* server_client_subnet_opcode  */
-  YYSYMBOL_server_max_client_subnet_ipv4 = 364, /* server_max_client_subnet_ipv4  */
-  YYSYMBOL_server_max_client_subnet_ipv6 = 365, /* server_max_client_subnet_ipv6  */
-  YYSYMBOL_server_min_client_subnet_ipv4 = 366, /* server_min_client_subnet_ipv4  */
-  YYSYMBOL_server_min_client_subnet_ipv6 = 367, /* server_min_client_subnet_ipv6  */
-  YYSYMBOL_server_max_ecs_tree_size_ipv4 = 368, /* server_max_ecs_tree_size_ipv4  */
-  YYSYMBOL_server_max_ecs_tree_size_ipv6 = 369, /* server_max_ecs_tree_size_ipv6  */
-  YYSYMBOL_server_interface = 370,         /* server_interface  */
-  YYSYMBOL_server_outgoing_interface = 371, /* server_outgoing_interface  */
-  YYSYMBOL_server_outgoing_range = 372,    /* server_outgoing_range  */
-  YYSYMBOL_server_outgoing_port_permit = 373, /* server_outgoing_port_permit  */
-  YYSYMBOL_server_outgoing_port_avoid = 374, /* server_outgoing_port_avoid  */
-  YYSYMBOL_server_outgoing_num_tcp = 375,  /* server_outgoing_num_tcp  */
-  YYSYMBOL_server_incoming_num_tcp = 376,  /* server_incoming_num_tcp  */
-  YYSYMBOL_server_interface_automatic = 377, /* server_interface_automatic  */
-  YYSYMBOL_server_do_ip4 = 378,            /* server_do_ip4  */
-  YYSYMBOL_server_do_ip6 = 379,            /* server_do_ip6  */
-  YYSYMBOL_server_do_udp = 380,            /* server_do_udp  */
-  YYSYMBOL_server_do_tcp = 381,            /* server_do_tcp  */
-  YYSYMBOL_server_prefer_ip4 = 382,        /* server_prefer_ip4  */
-  YYSYMBOL_server_prefer_ip6 = 383,        /* server_prefer_ip6  */
-  YYSYMBOL_server_tcp_mss = 384,           /* server_tcp_mss  */
-  YYSYMBOL_server_outgoing_tcp_mss = 385,  /* server_outgoing_tcp_mss  */
-  YYSYMBOL_server_tcp_idle_timeout = 386,  /* server_tcp_idle_timeout  */
-  YYSYMBOL_server_max_reuse_tcp_queries = 387, /* server_max_reuse_tcp_queries  */
-  YYSYMBOL_server_tcp_reuse_timeout = 388, /* server_tcp_reuse_timeout  */
-  YYSYMBOL_server_tcp_auth_query_timeout = 389, /* server_tcp_auth_query_timeout  */
-  YYSYMBOL_server_tcp_keepalive = 390,     /* server_tcp_keepalive  */
-  YYSYMBOL_server_tcp_keepalive_timeout = 391, /* server_tcp_keepalive_timeout  */
-  YYSYMBOL_server_tcp_upstream = 392,      /* server_tcp_upstream  */
-  YYSYMBOL_server_udp_upstream_without_downstream = 393, /* server_udp_upstream_without_downstream  */
-  YYSYMBOL_server_ssl_upstream = 394,      /* server_ssl_upstream  */
-  YYSYMBOL_server_ssl_service_key = 395,   /* server_ssl_service_key  */
-  YYSYMBOL_server_ssl_service_pem = 396,   /* server_ssl_service_pem  */
-  YYSYMBOL_server_ssl_port = 397,          /* server_ssl_port  */
-  YYSYMBOL_server_tls_cert_bundle = 398,   /* server_tls_cert_bundle  */
-  YYSYMBOL_server_tls_win_cert = 399,      /* server_tls_win_cert  */
-  YYSYMBOL_server_tls_additional_port = 400, /* server_tls_additional_port  */
-  YYSYMBOL_server_tls_ciphers = 401,       /* server_tls_ciphers  */
-  YYSYMBOL_server_tls_ciphersuites = 402,  /* server_tls_ciphersuites  */
-  YYSYMBOL_server_tls_session_ticket_keys = 403, /* server_tls_session_ticket_keys  */
-  YYSYMBOL_server_tls_use_sni = 404,       /* server_tls_use_sni  */
-  YYSYMBOL_server_https_port = 405,        /* server_https_port  */
-  YYSYMBOL_server_http_endpoint = 406,     /* server_http_endpoint  */
-  YYSYMBOL_server_http_max_streams = 407,  /* server_http_max_streams  */
-  YYSYMBOL_server_http_query_buffer_size = 408, /* server_http_query_buffer_size  */
-  YYSYMBOL_server_http_response_buffer_size = 409, /* server_http_response_buffer_size  */
-  YYSYMBOL_server_http_nodelay = 410,      /* server_http_nodelay  */
-  YYSYMBOL_server_http_notls_downstream = 411, /* server_http_notls_downstream  */
-  YYSYMBOL_server_use_systemd = 412,       /* server_use_systemd  */
-  YYSYMBOL_server_do_daemonize = 413,      /* server_do_daemonize  */
-  YYSYMBOL_server_use_syslog = 414,        /* server_use_syslog  */
-  YYSYMBOL_server_log_time_ascii = 415,    /* server_log_time_ascii  */
-  YYSYMBOL_server_log_queries = 416,       /* server_log_queries  */
-  YYSYMBOL_server_log_replies = 417,       /* server_log_replies  */
-  YYSYMBOL_server_log_tag_queryreply = 418, /* server_log_tag_queryreply  */
-  YYSYMBOL_server_log_servfail = 419,      /* server_log_servfail  */
-  YYSYMBOL_server_log_local_actions = 420, /* server_log_local_actions  */
-  YYSYMBOL_server_chroot = 421,            /* server_chroot  */
-  YYSYMBOL_server_username = 422,          /* server_username  */
-  YYSYMBOL_server_directory = 423,         /* server_directory  */
-  YYSYMBOL_server_logfile = 424,           /* server_logfile  */
-  YYSYMBOL_server_pidfile = 425,           /* server_pidfile  */
-  YYSYMBOL_server_root_hints = 426,        /* server_root_hints  */
-  YYSYMBOL_server_dlv_anchor_file = 427,   /* server_dlv_anchor_file  */
-  YYSYMBOL_server_dlv_anchor = 428,        /* server_dlv_anchor  */
-  YYSYMBOL_server_auto_trust_anchor_file = 429, /* server_auto_trust_anchor_file  */
-  YYSYMBOL_server_trust_anchor_file = 430, /* server_trust_anchor_file  */
-  YYSYMBOL_server_trusted_keys_file = 431, /* server_trusted_keys_file  */
-  YYSYMBOL_server_trust_anchor = 432,      /* server_trust_anchor  */
-  YYSYMBOL_server_trust_anchor_signaling = 433, /* server_trust_anchor_signaling  */
-  YYSYMBOL_server_root_key_sentinel = 434, /* server_root_key_sentinel  */
-  YYSYMBOL_server_domain_insecure = 435,   /* server_domain_insecure  */
-  YYSYMBOL_server_hide_identity = 436,     /* server_hide_identity  */
-  YYSYMBOL_server_hide_version = 437,      /* server_hide_version  */
-  YYSYMBOL_server_hide_trustanchor = 438,  /* server_hide_trustanchor  */
-  YYSYMBOL_server_hide_http_user_agent = 439, /* server_hide_http_user_agent  */
-  YYSYMBOL_server_identity = 440,          /* server_identity  */
-  YYSYMBOL_server_version = 441,           /* server_version  */
-  YYSYMBOL_server_http_user_agent = 442,   /* server_http_user_agent  */
-  YYSYMBOL_server_nsid = 443,              /* server_nsid  */
-  YYSYMBOL_server_so_rcvbuf = 444,         /* server_so_rcvbuf  */
-  YYSYMBOL_server_so_sndbuf = 445,         /* server_so_sndbuf  */
-  YYSYMBOL_server_so_reuseport = 446,      /* server_so_reuseport  */
-  YYSYMBOL_server_ip_transparent = 447,    /* server_ip_transparent  */
-  YYSYMBOL_server_ip_freebind = 448,       /* server_ip_freebind  */
-  YYSYMBOL_server_ip_dscp = 449,           /* server_ip_dscp  */
-  YYSYMBOL_server_stream_wait_size = 450,  /* server_stream_wait_size  */
-  YYSYMBOL_server_edns_buffer_size = 451,  /* server_edns_buffer_size  */
-  YYSYMBOL_server_msg_buffer_size = 452,   /* server_msg_buffer_size  */
-  YYSYMBOL_server_msg_cache_size = 453,    /* server_msg_cache_size  */
-  YYSYMBOL_server_msg_cache_slabs = 454,   /* server_msg_cache_slabs  */
-  YYSYMBOL_server_num_queries_per_thread = 455, /* server_num_queries_per_thread  */
-  YYSYMBOL_server_jostle_timeout = 456,    /* server_jostle_timeout  */
-  YYSYMBOL_server_delay_close = 457,       /* server_delay_close  */
-  YYSYMBOL_server_udp_connect = 458,       /* server_udp_connect  */
-  YYSYMBOL_server_unblock_lan_zones = 459, /* server_unblock_lan_zones  */
-  YYSYMBOL_server_insecure_lan_zones = 460, /* server_insecure_lan_zones  */
-  YYSYMBOL_server_rrset_cache_size = 461,  /* server_rrset_cache_size  */
-  YYSYMBOL_server_rrset_cache_slabs = 462, /* server_rrset_cache_slabs  */
-  YYSYMBOL_server_infra_host_ttl = 463,    /* server_infra_host_ttl  */
-  YYSYMBOL_server_infra_lame_ttl = 464,    /* server_infra_lame_ttl  */
-  YYSYMBOL_server_infra_cache_numhosts = 465, /* server_infra_cache_numhosts  */
-  YYSYMBOL_server_infra_cache_lame_size = 466, /* server_infra_cache_lame_size  */
-  YYSYMBOL_server_infra_cache_slabs = 467, /* server_infra_cache_slabs  */
-  YYSYMBOL_server_infra_cache_min_rtt = 468, /* server_infra_cache_min_rtt  */
-  YYSYMBOL_server_infra_keep_probing = 469, /* server_infra_keep_probing  */
-  YYSYMBOL_server_target_fetch_policy = 470, /* server_target_fetch_policy  */
-  YYSYMBOL_server_harden_short_bufsize = 471, /* server_harden_short_bufsize  */
-  YYSYMBOL_server_harden_large_queries = 472, /* server_harden_large_queries  */
-  YYSYMBOL_server_harden_glue = 473,       /* server_harden_glue  */
-  YYSYMBOL_server_harden_dnssec_stripped = 474, /* server_harden_dnssec_stripped  */
-  YYSYMBOL_server_harden_below_nxdomain = 475, /* server_harden_below_nxdomain  */
-  YYSYMBOL_server_harden_referral_path = 476, /* server_harden_referral_path  */
-  YYSYMBOL_server_harden_algo_downgrade = 477, /* server_harden_algo_downgrade  */
-  YYSYMBOL_server_use_caps_for_id = 478,   /* server_use_caps_for_id  */
-  YYSYMBOL_server_caps_whitelist = 479,    /* server_caps_whitelist  */
-  YYSYMBOL_server_private_address = 480,   /* server_private_address  */
-  YYSYMBOL_server_private_domain = 481,    /* server_private_domain  */
-  YYSYMBOL_server_prefetch = 482,          /* server_prefetch  */
-  YYSYMBOL_server_prefetch_key = 483,      /* server_prefetch_key  */
-  YYSYMBOL_server_deny_any = 484,          /* server_deny_any  */
-  YYSYMBOL_server_unwanted_reply_threshold = 485, /* server_unwanted_reply_threshold  */
-  YYSYMBOL_server_do_not_query_address = 486, /* server_do_not_query_address  */
-  YYSYMBOL_server_do_not_query_localhost = 487, /* server_do_not_query_localhost  */
-  YYSYMBOL_server_access_control = 488,    /* server_access_control  */
-  YYSYMBOL_server_module_conf = 489,       /* server_module_conf  */
-  YYSYMBOL_server_val_override_date = 490, /* server_val_override_date  */
-  YYSYMBOL_server_val_sig_skew_min = 491,  /* server_val_sig_skew_min  */
-  YYSYMBOL_server_val_sig_skew_max = 492,  /* server_val_sig_skew_max  */
-  YYSYMBOL_server_val_max_restart = 493,   /* server_val_max_restart  */
-  YYSYMBOL_server_cache_max_ttl = 494,     /* server_cache_max_ttl  */
-  YYSYMBOL_server_cache_max_negative_ttl = 495, /* server_cache_max_negative_ttl  */
-  YYSYMBOL_server_cache_min_ttl = 496,     /* server_cache_min_ttl  */
-  YYSYMBOL_server_bogus_ttl = 497,         /* server_bogus_ttl  */
-  YYSYMBOL_server_val_clean_additional = 498, /* server_val_clean_additional  */
-  YYSYMBOL_server_val_permissive_mode = 499, /* server_val_permissive_mode  */
-  YYSYMBOL_server_aggressive_nsec = 500,   /* server_aggressive_nsec  */
-  YYSYMBOL_server_ignore_cd_flag = 501,    /* server_ignore_cd_flag  */
-  YYSYMBOL_server_serve_expired = 502,     /* server_serve_expired  */
-  YYSYMBOL_server_serve_expired_ttl = 503, /* server_serve_expired_ttl  */
-  YYSYMBOL_server_serve_expired_ttl_reset = 504, /* server_serve_expired_ttl_reset  */
-  YYSYMBOL_server_serve_expired_reply_ttl = 505, /* server_serve_expired_reply_ttl  */
-  YYSYMBOL_server_serve_expired_client_timeout = 506, /* server_serve_expired_client_timeout  */
-  YYSYMBOL_server_serve_original_ttl = 507, /* server_serve_original_ttl  */
-  YYSYMBOL_server_fake_dsa = 508,          /* server_fake_dsa  */
-  YYSYMBOL_server_fake_sha1 = 509,         /* server_fake_sha1  */
-  YYSYMBOL_server_val_log_level = 510,     /* server_val_log_level  */
-  YYSYMBOL_server_val_nsec3_keysize_iterations = 511, /* server_val_nsec3_keysize_iterations  */
-  YYSYMBOL_server_zonemd_permissive_mode = 512, /* server_zonemd_permissive_mode  */
-  YYSYMBOL_server_add_holddown = 513,      /* server_add_holddown  */
-  YYSYMBOL_server_del_holddown = 514,      /* server_del_holddown  */
-  YYSYMBOL_server_keep_missing = 515,      /* server_keep_missing  */
-  YYSYMBOL_server_permit_small_holddown = 516, /* server_permit_small_holddown  */
-  YYSYMBOL_server_key_cache_size = 517,    /* server_key_cache_size  */
-  YYSYMBOL_server_key_cache_slabs = 518,   /* server_key_cache_slabs  */
-  YYSYMBOL_server_neg_cache_size = 519,    /* server_neg_cache_size  */
-  YYSYMBOL_server_local_zone = 520,        /* server_local_zone  */
-  YYSYMBOL_server_local_data = 521,        /* server_local_data  */
-  YYSYMBOL_server_local_data_ptr = 522,    /* server_local_data_ptr  */
-  YYSYMBOL_server_minimal_responses = 523, /* server_minimal_responses  */
-  YYSYMBOL_server_rrset_roundrobin = 524,  /* server_rrset_roundrobin  */
-  YYSYMBOL_server_unknown_server_time_limit = 525, /* server_unknown_server_time_limit  */
-  YYSYMBOL_server_max_udp_size = 526,      /* server_max_udp_size  */
-  YYSYMBOL_server_dns64_prefix = 527,      /* server_dns64_prefix  */
-  YYSYMBOL_server_dns64_synthall = 528,    /* server_dns64_synthall  */
-  YYSYMBOL_server_dns64_ignore_aaaa = 529, /* server_dns64_ignore_aaaa  */
-  YYSYMBOL_server_define_tag = 530,        /* server_define_tag  */
-  YYSYMBOL_server_local_zone_tag = 531,    /* server_local_zone_tag  */
-  YYSYMBOL_server_access_control_tag = 532, /* server_access_control_tag  */
-  YYSYMBOL_server_access_control_tag_action = 533, /* server_access_control_tag_action  */
-  YYSYMBOL_server_access_control_tag_data = 534, /* server_access_control_tag_data  */
-  YYSYMBOL_server_local_zone_override = 535, /* server_local_zone_override  */
-  YYSYMBOL_server_access_control_view = 536, /* server_access_control_view  */
-  YYSYMBOL_server_response_ip_tag = 537,   /* server_response_ip_tag  */
-  YYSYMBOL_server_ip_ratelimit = 538,      /* server_ip_ratelimit  */
-  YYSYMBOL_server_ratelimit = 539,         /* server_ratelimit  */
-  YYSYMBOL_server_ip_ratelimit_size = 540, /* server_ip_ratelimit_size  */
-  YYSYMBOL_server_ratelimit_size = 541,    /* server_ratelimit_size  */
-  YYSYMBOL_server_ip_ratelimit_slabs = 542, /* server_ip_ratelimit_slabs  */
-  YYSYMBOL_server_ratelimit_slabs = 543,   /* server_ratelimit_slabs  */
-  YYSYMBOL_server_ratelimit_for_domain = 544, /* server_ratelimit_for_domain  */
-  YYSYMBOL_server_ratelimit_below_domain = 545, /* server_ratelimit_below_domain  */
-  YYSYMBOL_server_ip_ratelimit_factor = 546, /* server_ip_ratelimit_factor  */
-  YYSYMBOL_server_ratelimit_factor = 547,  /* server_ratelimit_factor  */
-  YYSYMBOL_server_ip_ratelimit_backoff = 548, /* server_ip_ratelimit_backoff  */
-  YYSYMBOL_server_ratelimit_backoff = 549, /* server_ratelimit_backoff  */
-  YYSYMBOL_server_outbound_msg_retry = 550, /* server_outbound_msg_retry  */
-  YYSYMBOL_server_low_rtt = 551,           /* server_low_rtt  */
-  YYSYMBOL_server_fast_server_num = 552,   /* server_fast_server_num  */
-  YYSYMBOL_server_fast_server_permil = 553, /* server_fast_server_permil  */
-  YYSYMBOL_server_qname_minimisation = 554, /* server_qname_minimisation  */
-  YYSYMBOL_server_qname_minimisation_strict = 555, /* server_qname_minimisation_strict  */
-  YYSYMBOL_server_pad_responses = 556,     /* server_pad_responses  */
-  YYSYMBOL_server_pad_responses_block_size = 557, /* server_pad_responses_block_size  */
-  YYSYMBOL_server_pad_queries = 558,       /* server_pad_queries  */
-  YYSYMBOL_server_pad_queries_block_size = 559, /* server_pad_queries_block_size  */
-  YYSYMBOL_server_ipsecmod_enabled = 560,  /* server_ipsecmod_enabled  */
-  YYSYMBOL_server_ipsecmod_ignore_bogus = 561, /* server_ipsecmod_ignore_bogus  */
-  YYSYMBOL_server_ipsecmod_hook = 562,     /* server_ipsecmod_hook  */
-  YYSYMBOL_server_ipsecmod_max_ttl = 563,  /* server_ipsecmod_max_ttl  */
-  YYSYMBOL_server_ipsecmod_whitelist = 564, /* server_ipsecmod_whitelist  */
-  YYSYMBOL_server_ipsecmod_strict = 565,   /* server_ipsecmod_strict  */
-  YYSYMBOL_server_edns_client_string = 566, /* server_edns_client_string  */
-  YYSYMBOL_server_edns_client_string_opcode = 567, /* server_edns_client_string_opcode  */
-  YYSYMBOL_stub_name = 568,                /* stub_name  */
-  YYSYMBOL_stub_host = 569,                /* stub_host  */
-  YYSYMBOL_stub_addr = 570,                /* stub_addr  */
-  YYSYMBOL_stub_first = 571,               /* stub_first  */
-  YYSYMBOL_stub_no_cache = 572,            /* stub_no_cache  */
-  YYSYMBOL_stub_ssl_upstream = 573,        /* stub_ssl_upstream  */
-  YYSYMBOL_stub_tcp_upstream = 574,        /* stub_tcp_upstream  */
-  YYSYMBOL_stub_prime = 575,               /* stub_prime  */
-  YYSYMBOL_forward_name = 576,             /* forward_name  */
-  YYSYMBOL_forward_host = 577,             /* forward_host  */
-  YYSYMBOL_forward_addr = 578,             /* forward_addr  */
-  YYSYMBOL_forward_first = 579,            /* forward_first  */
-  YYSYMBOL_forward_no_cache = 580,         /* forward_no_cache  */
-  YYSYMBOL_forward_ssl_upstream = 581,     /* forward_ssl_upstream  */
-  YYSYMBOL_forward_tcp_upstream = 582,     /* forward_tcp_upstream  */
-  YYSYMBOL_auth_name = 583,                /* auth_name  */
-  YYSYMBOL_auth_zonefile = 584,            /* auth_zonefile  */
-  YYSYMBOL_auth_master = 585,              /* auth_master  */
-  YYSYMBOL_auth_url = 586,                 /* auth_url  */
-  YYSYMBOL_auth_allow_notify = 587,        /* auth_allow_notify  */
-  YYSYMBOL_auth_zonemd_check = 588,        /* auth_zonemd_check  */
-  YYSYMBOL_auth_zonemd_reject_absence = 589, /* auth_zonemd_reject_absence  */
-  YYSYMBOL_auth_for_downstream = 590,      /* auth_for_downstream  */
-  YYSYMBOL_auth_for_upstream = 591,        /* auth_for_upstream  */
-  YYSYMBOL_auth_fallback_enabled = 592,    /* auth_fallback_enabled  */
-  YYSYMBOL_view_name = 593,                /* view_name  */
-  YYSYMBOL_view_local_zone = 594,          /* view_local_zone  */
-  YYSYMBOL_view_response_ip = 595,         /* view_response_ip  */
-  YYSYMBOL_view_response_ip_data = 596,    /* view_response_ip_data  */
-  YYSYMBOL_view_local_data = 597,          /* view_local_data  */
-  YYSYMBOL_view_local_data_ptr = 598,      /* view_local_data_ptr  */
-  YYSYMBOL_view_first = 599,               /* view_first  */
-  YYSYMBOL_rcstart = 600,                  /* rcstart  */
-  YYSYMBOL_contents_rc = 601,              /* contents_rc  */
-  YYSYMBOL_content_rc = 602,               /* content_rc  */
-  YYSYMBOL_rc_control_enable = 603,        /* rc_control_enable  */
-  YYSYMBOL_rc_control_port = 604,          /* rc_control_port  */
-  YYSYMBOL_rc_control_interface = 605,     /* rc_control_interface  */
-  YYSYMBOL_rc_control_use_cert = 606,      /* rc_control_use_cert  */
-  YYSYMBOL_rc_server_key_file = 607,       /* rc_server_key_file  */
-  YYSYMBOL_rc_server_cert_file = 608,      /* rc_server_cert_file  */
-  YYSYMBOL_rc_control_key_file = 609,      /* rc_control_key_file  */
-  YYSYMBOL_rc_control_cert_file = 610,     /* rc_control_cert_file  */
-  YYSYMBOL_dtstart = 611,                  /* dtstart  */
-  YYSYMBOL_contents_dt = 612,              /* contents_dt  */
-  YYSYMBOL_content_dt = 613,               /* content_dt  */
-  YYSYMBOL_dt_dnstap_enable = 614,         /* dt_dnstap_enable  */
-  YYSYMBOL_dt_dnstap_bidirectional = 615,  /* dt_dnstap_bidirectional  */
-  YYSYMBOL_dt_dnstap_socket_path = 616,    /* dt_dnstap_socket_path  */
-  YYSYMBOL_dt_dnstap_ip = 617,             /* dt_dnstap_ip  */
-  YYSYMBOL_dt_dnstap_tls = 618,            /* dt_dnstap_tls  */
-  YYSYMBOL_dt_dnstap_tls_server_name = 619, /* dt_dnstap_tls_server_name  */
-  YYSYMBOL_dt_dnstap_tls_cert_bundle = 620, /* dt_dnstap_tls_cert_bundle  */
-  YYSYMBOL_dt_dnstap_tls_client_key_file = 621, /* dt_dnstap_tls_client_key_file  */
-  YYSYMBOL_dt_dnstap_tls_client_cert_file = 622, /* dt_dnstap_tls_client_cert_file  */
-  YYSYMBOL_dt_dnstap_send_identity = 623,  /* dt_dnstap_send_identity  */
-  YYSYMBOL_dt_dnstap_send_version = 624,   /* dt_dnstap_send_version  */
-  YYSYMBOL_dt_dnstap_identity = 625,       /* dt_dnstap_identity  */
-  YYSYMBOL_dt_dnstap_version = 626,        /* dt_dnstap_version  */
-  YYSYMBOL_dt_dnstap_log_resolver_query_messages = 627, /* dt_dnstap_log_resolver_query_messages  */
-  YYSYMBOL_dt_dnstap_log_resolver_response_messages = 628, /* dt_dnstap_log_resolver_response_messages  */
-  YYSYMBOL_dt_dnstap_log_client_query_messages = 629, /* dt_dnstap_log_client_query_messages  */
-  YYSYMBOL_dt_dnstap_log_client_response_messages = 630, /* dt_dnstap_log_client_response_messages  */
-  YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 631, /* dt_dnstap_log_forwarder_query_messages  */
-  YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 632, /* dt_dnstap_log_forwarder_response_messages  */
-  YYSYMBOL_pythonstart = 633,              /* pythonstart  */
-  YYSYMBOL_contents_py = 634,              /* contents_py  */
-  YYSYMBOL_content_py = 635,               /* content_py  */
-  YYSYMBOL_py_script = 636,                /* py_script  */
-  YYSYMBOL_dynlibstart = 637,              /* dynlibstart  */
-  YYSYMBOL_contents_dl = 638,              /* contents_dl  */
-  YYSYMBOL_content_dl = 639,               /* content_dl  */
-  YYSYMBOL_dl_file = 640,                  /* dl_file  */
-  YYSYMBOL_server_disable_dnssec_lame_check = 641, /* server_disable_dnssec_lame_check  */
-  YYSYMBOL_server_log_identity = 642,      /* server_log_identity  */
-  YYSYMBOL_server_response_ip = 643,       /* server_response_ip  */
-  YYSYMBOL_server_response_ip_data = 644,  /* server_response_ip_data  */
-  YYSYMBOL_dnscstart = 645,                /* dnscstart  */
-  YYSYMBOL_contents_dnsc = 646,            /* contents_dnsc  */
-  YYSYMBOL_content_dnsc = 647,             /* content_dnsc  */
-  YYSYMBOL_dnsc_dnscrypt_enable = 648,     /* dnsc_dnscrypt_enable  */
-  YYSYMBOL_dnsc_dnscrypt_port = 649,       /* dnsc_dnscrypt_port  */
-  YYSYMBOL_dnsc_dnscrypt_provider = 650,   /* dnsc_dnscrypt_provider  */
-  YYSYMBOL_dnsc_dnscrypt_provider_cert = 651, /* dnsc_dnscrypt_provider_cert  */
-  YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 652, /* dnsc_dnscrypt_provider_cert_rotated  */
-  YYSYMBOL_dnsc_dnscrypt_secret_key = 653, /* dnsc_dnscrypt_secret_key  */
-  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 654, /* dnsc_dnscrypt_shared_secret_cache_size  */
-  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 655, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
-  YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 656, /* dnsc_dnscrypt_nonce_cache_size  */
-  YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 657, /* dnsc_dnscrypt_nonce_cache_slabs  */
-  YYSYMBOL_cachedbstart = 658,             /* cachedbstart  */
-  YYSYMBOL_contents_cachedb = 659,         /* contents_cachedb  */
-  YYSYMBOL_content_cachedb = 660,          /* content_cachedb  */
-  YYSYMBOL_cachedb_backend_name = 661,     /* cachedb_backend_name  */
-  YYSYMBOL_cachedb_secret_seed = 662,      /* cachedb_secret_seed  */
-  YYSYMBOL_redis_server_host = 663,        /* redis_server_host  */
-  YYSYMBOL_redis_server_port = 664,        /* redis_server_port  */
-  YYSYMBOL_redis_timeout = 665,            /* redis_timeout  */
-  YYSYMBOL_redis_expire_records = 666,     /* redis_expire_records  */
-  YYSYMBOL_server_tcp_connection_limit = 667, /* server_tcp_connection_limit  */
-  YYSYMBOL_ipsetstart = 668,               /* ipsetstart  */
-  YYSYMBOL_contents_ipset = 669,           /* contents_ipset  */
-  YYSYMBOL_content_ipset = 670,            /* content_ipset  */
-  YYSYMBOL_ipset_name_v4 = 671,            /* ipset_name_v4  */
-  YYSYMBOL_ipset_name_v6 = 672             /* ipset_name_v6  */
+  YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 324, /* VAR_INTERFACE_AUTOMATIC_PORTS  */
+  YYSYMBOL_YYACCEPT = 325,                 /* $accept  */
+  YYSYMBOL_toplevelvars = 326,             /* toplevelvars  */
+  YYSYMBOL_toplevelvar = 327,              /* toplevelvar  */
+  YYSYMBOL_force_toplevel = 328,           /* force_toplevel  */
+  YYSYMBOL_serverstart = 329,              /* serverstart  */
+  YYSYMBOL_contents_server = 330,          /* contents_server  */
+  YYSYMBOL_content_server = 331,           /* content_server  */
+  YYSYMBOL_stubstart = 332,                /* stubstart  */
+  YYSYMBOL_contents_stub = 333,            /* contents_stub  */
+  YYSYMBOL_content_stub = 334,             /* content_stub  */
+  YYSYMBOL_forwardstart = 335,             /* forwardstart  */
+  YYSYMBOL_contents_forward = 336,         /* contents_forward  */
+  YYSYMBOL_content_forward = 337,          /* content_forward  */
+  YYSYMBOL_viewstart = 338,                /* viewstart  */
+  YYSYMBOL_contents_view = 339,            /* contents_view  */
+  YYSYMBOL_content_view = 340,             /* content_view  */
+  YYSYMBOL_authstart = 341,                /* authstart  */
+  YYSYMBOL_contents_auth = 342,            /* contents_auth  */
+  YYSYMBOL_content_auth = 343,             /* content_auth  */
+  YYSYMBOL_rpz_tag = 344,                  /* rpz_tag  */
+  YYSYMBOL_rpz_action_override = 345,      /* rpz_action_override  */
+  YYSYMBOL_rpz_cname_override = 346,       /* rpz_cname_override  */
+  YYSYMBOL_rpz_log = 347,                  /* rpz_log  */
+  YYSYMBOL_rpz_log_name = 348,             /* rpz_log_name  */
+  YYSYMBOL_rpz_signal_nxdomain_ra = 349,   /* rpz_signal_nxdomain_ra  */
+  YYSYMBOL_rpzstart = 350,                 /* rpzstart  */
+  YYSYMBOL_contents_rpz = 351,             /* contents_rpz  */
+  YYSYMBOL_content_rpz = 352,              /* content_rpz  */
+  YYSYMBOL_server_num_threads = 353,       /* server_num_threads  */
+  YYSYMBOL_server_verbosity = 354,         /* server_verbosity  */
+  YYSYMBOL_server_statistics_interval = 355, /* server_statistics_interval  */
+  YYSYMBOL_server_statistics_cumulative = 356, /* server_statistics_cumulative  */
+  YYSYMBOL_server_extended_statistics = 357, /* server_extended_statistics  */
+  YYSYMBOL_server_shm_enable = 358,        /* server_shm_enable  */
+  YYSYMBOL_server_shm_key = 359,           /* server_shm_key  */
+  YYSYMBOL_server_port = 360,              /* server_port  */
+  YYSYMBOL_server_send_client_subnet = 361, /* server_send_client_subnet  */
+  YYSYMBOL_server_client_subnet_zone = 362, /* server_client_subnet_zone  */
+  YYSYMBOL_server_client_subnet_always_forward = 363, /* server_client_subnet_always_forward  */
+  YYSYMBOL_server_client_subnet_opcode = 364, /* server_client_subnet_opcode  */
+  YYSYMBOL_server_max_client_subnet_ipv4 = 365, /* server_max_client_subnet_ipv4  */
+  YYSYMBOL_server_max_client_subnet_ipv6 = 366, /* server_max_client_subnet_ipv6  */
+  YYSYMBOL_server_min_client_subnet_ipv4 = 367, /* server_min_client_subnet_ipv4  */
+  YYSYMBOL_server_min_client_subnet_ipv6 = 368, /* server_min_client_subnet_ipv6  */
+  YYSYMBOL_server_max_ecs_tree_size_ipv4 = 369, /* server_max_ecs_tree_size_ipv4  */
+  YYSYMBOL_server_max_ecs_tree_size_ipv6 = 370, /* server_max_ecs_tree_size_ipv6  */
+  YYSYMBOL_server_interface = 371,         /* server_interface  */
+  YYSYMBOL_server_outgoing_interface = 372, /* server_outgoing_interface  */
+  YYSYMBOL_server_outgoing_range = 373,    /* server_outgoing_range  */
+  YYSYMBOL_server_outgoing_port_permit = 374, /* server_outgoing_port_permit  */
+  YYSYMBOL_server_outgoing_port_avoid = 375, /* server_outgoing_port_avoid  */
+  YYSYMBOL_server_outgoing_num_tcp = 376,  /* server_outgoing_num_tcp  */
+  YYSYMBOL_server_incoming_num_tcp = 377,  /* server_incoming_num_tcp  */
+  YYSYMBOL_server_interface_automatic = 378, /* server_interface_automatic  */
+  YYSYMBOL_server_interface_automatic_ports = 379, /* server_interface_automatic_ports  */
+  YYSYMBOL_server_do_ip4 = 380,            /* server_do_ip4  */
+  YYSYMBOL_server_do_ip6 = 381,            /* server_do_ip6  */
+  YYSYMBOL_server_do_udp = 382,            /* server_do_udp  */
+  YYSYMBOL_server_do_tcp = 383,            /* server_do_tcp  */
+  YYSYMBOL_server_prefer_ip4 = 384,        /* server_prefer_ip4  */
+  YYSYMBOL_server_prefer_ip6 = 385,        /* server_prefer_ip6  */
+  YYSYMBOL_server_tcp_mss = 386,           /* server_tcp_mss  */
+  YYSYMBOL_server_outgoing_tcp_mss = 387,  /* server_outgoing_tcp_mss  */
+  YYSYMBOL_server_tcp_idle_timeout = 388,  /* server_tcp_idle_timeout  */
+  YYSYMBOL_server_max_reuse_tcp_queries = 389, /* server_max_reuse_tcp_queries  */
+  YYSYMBOL_server_tcp_reuse_timeout = 390, /* server_tcp_reuse_timeout  */
+  YYSYMBOL_server_tcp_auth_query_timeout = 391, /* server_tcp_auth_query_timeout  */
+  YYSYMBOL_server_tcp_keepalive = 392,     /* server_tcp_keepalive  */
+  YYSYMBOL_server_tcp_keepalive_timeout = 393, /* server_tcp_keepalive_timeout  */
+  YYSYMBOL_server_tcp_upstream = 394,      /* server_tcp_upstream  */
+  YYSYMBOL_server_udp_upstream_without_downstream = 395, /* server_udp_upstream_without_downstream  */
+  YYSYMBOL_server_ssl_upstream = 396,      /* server_ssl_upstream  */
+  YYSYMBOL_server_ssl_service_key = 397,   /* server_ssl_service_key  */
+  YYSYMBOL_server_ssl_service_pem = 398,   /* server_ssl_service_pem  */
+  YYSYMBOL_server_ssl_port = 399,          /* server_ssl_port  */
+  YYSYMBOL_server_tls_cert_bundle = 400,   /* server_tls_cert_bundle  */
+  YYSYMBOL_server_tls_win_cert = 401,      /* server_tls_win_cert  */
+  YYSYMBOL_server_tls_additional_port = 402, /* server_tls_additional_port  */
+  YYSYMBOL_server_tls_ciphers = 403,       /* server_tls_ciphers  */
+  YYSYMBOL_server_tls_ciphersuites = 404,  /* server_tls_ciphersuites  */
+  YYSYMBOL_server_tls_session_ticket_keys = 405, /* server_tls_session_ticket_keys  */
+  YYSYMBOL_server_tls_use_sni = 406,       /* server_tls_use_sni  */
+  YYSYMBOL_server_https_port = 407,        /* server_https_port  */
+  YYSYMBOL_server_http_endpoint = 408,     /* server_http_endpoint  */
+  YYSYMBOL_server_http_max_streams = 409,  /* server_http_max_streams  */
+  YYSYMBOL_server_http_query_buffer_size = 410, /* server_http_query_buffer_size  */
+  YYSYMBOL_server_http_response_buffer_size = 411, /* server_http_response_buffer_size  */
+  YYSYMBOL_server_http_nodelay = 412,      /* server_http_nodelay  */
+  YYSYMBOL_server_http_notls_downstream = 413, /* server_http_notls_downstream  */
+  YYSYMBOL_server_use_systemd = 414,       /* server_use_systemd  */
+  YYSYMBOL_server_do_daemonize = 415,      /* server_do_daemonize  */
+  YYSYMBOL_server_use_syslog = 416,        /* server_use_syslog  */
+  YYSYMBOL_server_log_time_ascii = 417,    /* server_log_time_ascii  */
+  YYSYMBOL_server_log_queries = 418,       /* server_log_queries  */
+  YYSYMBOL_server_log_replies = 419,       /* server_log_replies  */
+  YYSYMBOL_server_log_tag_queryreply = 420, /* server_log_tag_queryreply  */
+  YYSYMBOL_server_log_servfail = 421,      /* server_log_servfail  */
+  YYSYMBOL_server_log_local_actions = 422, /* server_log_local_actions  */
+  YYSYMBOL_server_chroot = 423,            /* server_chroot  */
+  YYSYMBOL_server_username = 424,          /* server_username  */
+  YYSYMBOL_server_directory = 425,         /* server_directory  */
+  YYSYMBOL_server_logfile = 426,           /* server_logfile  */
+  YYSYMBOL_server_pidfile = 427,           /* server_pidfile  */
+  YYSYMBOL_server_root_hints = 428,        /* server_root_hints  */
+  YYSYMBOL_server_dlv_anchor_file = 429,   /* server_dlv_anchor_file  */
+  YYSYMBOL_server_dlv_anchor = 430,        /* server_dlv_anchor  */
+  YYSYMBOL_server_auto_trust_anchor_file = 431, /* server_auto_trust_anchor_file  */
+  YYSYMBOL_server_trust_anchor_file = 432, /* server_trust_anchor_file  */
+  YYSYMBOL_server_trusted_keys_file = 433, /* server_trusted_keys_file  */
+  YYSYMBOL_server_trust_anchor = 434,      /* server_trust_anchor  */
+  YYSYMBOL_server_trust_anchor_signaling = 435, /* server_trust_anchor_signaling  */
+  YYSYMBOL_server_root_key_sentinel = 436, /* server_root_key_sentinel  */
+  YYSYMBOL_server_domain_insecure = 437,   /* server_domain_insecure  */
+  YYSYMBOL_server_hide_identity = 438,     /* server_hide_identity  */
+  YYSYMBOL_server_hide_version = 439,      /* server_hide_version  */
+  YYSYMBOL_server_hide_trustanchor = 440,  /* server_hide_trustanchor  */
+  YYSYMBOL_server_hide_http_user_agent = 441, /* server_hide_http_user_agent  */
+  YYSYMBOL_server_identity = 442,          /* server_identity  */
+  YYSYMBOL_server_version = 443,           /* server_version  */
+  YYSYMBOL_server_http_user_agent = 444,   /* server_http_user_agent  */
+  YYSYMBOL_server_nsid = 445,              /* server_nsid  */
+  YYSYMBOL_server_so_rcvbuf = 446,         /* server_so_rcvbuf  */
+  YYSYMBOL_server_so_sndbuf = 447,         /* server_so_sndbuf  */
+  YYSYMBOL_server_so_reuseport = 448,      /* server_so_reuseport  */
+  YYSYMBOL_server_ip_transparent = 449,    /* server_ip_transparent  */
+  YYSYMBOL_server_ip_freebind = 450,       /* server_ip_freebind  */
+  YYSYMBOL_server_ip_dscp = 451,           /* server_ip_dscp  */
+  YYSYMBOL_server_stream_wait_size = 452,  /* server_stream_wait_size  */
+  YYSYMBOL_server_edns_buffer_size = 453,  /* server_edns_buffer_size  */
+  YYSYMBOL_server_msg_buffer_size = 454,   /* server_msg_buffer_size  */
+  YYSYMBOL_server_msg_cache_size = 455,    /* server_msg_cache_size  */
+  YYSYMBOL_server_msg_cache_slabs = 456,   /* server_msg_cache_slabs  */
+  YYSYMBOL_server_num_queries_per_thread = 457, /* server_num_queries_per_thread  */
+  YYSYMBOL_server_jostle_timeout = 458,    /* server_jostle_timeout  */
+  YYSYMBOL_server_delay_close = 459,       /* server_delay_close  */
+  YYSYMBOL_server_udp_connect = 460,       /* server_udp_connect  */
+  YYSYMBOL_server_unblock_lan_zones = 461, /* server_unblock_lan_zones  */
+  YYSYMBOL_server_insecure_lan_zones = 462, /* server_insecure_lan_zones  */
+  YYSYMBOL_server_rrset_cache_size = 463,  /* server_rrset_cache_size  */
+  YYSYMBOL_server_rrset_cache_slabs = 464, /* server_rrset_cache_slabs  */
+  YYSYMBOL_server_infra_host_ttl = 465,    /* server_infra_host_ttl  */
+  YYSYMBOL_server_infra_lame_ttl = 466,    /* server_infra_lame_ttl  */
+  YYSYMBOL_server_infra_cache_numhosts = 467, /* server_infra_cache_numhosts  */
+  YYSYMBOL_server_infra_cache_lame_size = 468, /* server_infra_cache_lame_size  */
+  YYSYMBOL_server_infra_cache_slabs = 469, /* server_infra_cache_slabs  */
+  YYSYMBOL_server_infra_cache_min_rtt = 470, /* server_infra_cache_min_rtt  */
+  YYSYMBOL_server_infra_keep_probing = 471, /* server_infra_keep_probing  */
+  YYSYMBOL_server_target_fetch_policy = 472, /* server_target_fetch_policy  */
+  YYSYMBOL_server_harden_short_bufsize = 473, /* server_harden_short_bufsize  */
+  YYSYMBOL_server_harden_large_queries = 474, /* server_harden_large_queries  */
+  YYSYMBOL_server_harden_glue = 475,       /* server_harden_glue  */
+  YYSYMBOL_server_harden_dnssec_stripped = 476, /* server_harden_dnssec_stripped  */
+  YYSYMBOL_server_harden_below_nxdomain = 477, /* server_harden_below_nxdomain  */
+  YYSYMBOL_server_harden_referral_path = 478, /* server_harden_referral_path  */
+  YYSYMBOL_server_harden_algo_downgrade = 479, /* server_harden_algo_downgrade  */
+  YYSYMBOL_server_use_caps_for_id = 480,   /* server_use_caps_for_id  */
+  YYSYMBOL_server_caps_whitelist = 481,    /* server_caps_whitelist  */
+  YYSYMBOL_server_private_address = 482,   /* server_private_address  */
+  YYSYMBOL_server_private_domain = 483,    /* server_private_domain  */
+  YYSYMBOL_server_prefetch = 484,          /* server_prefetch  */
+  YYSYMBOL_server_prefetch_key = 485,      /* server_prefetch_key  */
+  YYSYMBOL_server_deny_any = 486,          /* server_deny_any  */
+  YYSYMBOL_server_unwanted_reply_threshold = 487, /* server_unwanted_reply_threshold  */
+  YYSYMBOL_server_do_not_query_address = 488, /* server_do_not_query_address  */
+  YYSYMBOL_server_do_not_query_localhost = 489, /* server_do_not_query_localhost  */
+  YYSYMBOL_server_access_control = 490,    /* server_access_control  */
+  YYSYMBOL_server_module_conf = 491,       /* server_module_conf  */
+  YYSYMBOL_server_val_override_date = 492, /* server_val_override_date  */
+  YYSYMBOL_server_val_sig_skew_min = 493,  /* server_val_sig_skew_min  */
+  YYSYMBOL_server_val_sig_skew_max = 494,  /* server_val_sig_skew_max  */
+  YYSYMBOL_server_val_max_restart = 495,   /* server_val_max_restart  */
+  YYSYMBOL_server_cache_max_ttl = 496,     /* server_cache_max_ttl  */
+  YYSYMBOL_server_cache_max_negative_ttl = 497, /* server_cache_max_negative_ttl  */
+  YYSYMBOL_server_cache_min_ttl = 498,     /* server_cache_min_ttl  */
+  YYSYMBOL_server_bogus_ttl = 499,         /* server_bogus_ttl  */
+  YYSYMBOL_server_val_clean_additional = 500, /* server_val_clean_additional  */
+  YYSYMBOL_server_val_permissive_mode = 501, /* server_val_permissive_mode  */
+  YYSYMBOL_server_aggressive_nsec = 502,   /* server_aggressive_nsec  */
+  YYSYMBOL_server_ignore_cd_flag = 503,    /* server_ignore_cd_flag  */
+  YYSYMBOL_server_serve_expired = 504,     /* server_serve_expired  */
+  YYSYMBOL_server_serve_expired_ttl = 505, /* server_serve_expired_ttl  */
+  YYSYMBOL_server_serve_expired_ttl_reset = 506, /* server_serve_expired_ttl_reset  */
+  YYSYMBOL_server_serve_expired_reply_ttl = 507, /* server_serve_expired_reply_ttl  */
+  YYSYMBOL_server_serve_expired_client_timeout = 508, /* server_serve_expired_client_timeout  */
+  YYSYMBOL_server_serve_original_ttl = 509, /* server_serve_original_ttl  */
+  YYSYMBOL_server_fake_dsa = 510,          /* server_fake_dsa  */
+  YYSYMBOL_server_fake_sha1 = 511,         /* server_fake_sha1  */
+  YYSYMBOL_server_val_log_level = 512,     /* server_val_log_level  */
+  YYSYMBOL_server_val_nsec3_keysize_iterations = 513, /* server_val_nsec3_keysize_iterations  */
+  YYSYMBOL_server_zonemd_permissive_mode = 514, /* server_zonemd_permissive_mode  */
+  YYSYMBOL_server_add_holddown = 515,      /* server_add_holddown  */
+  YYSYMBOL_server_del_holddown = 516,      /* server_del_holddown  */
+  YYSYMBOL_server_keep_missing = 517,      /* server_keep_missing  */
+  YYSYMBOL_server_permit_small_holddown = 518, /* server_permit_small_holddown  */
+  YYSYMBOL_server_key_cache_size = 519,    /* server_key_cache_size  */
+  YYSYMBOL_server_key_cache_slabs = 520,   /* server_key_cache_slabs  */
+  YYSYMBOL_server_neg_cache_size = 521,    /* server_neg_cache_size  */
+  YYSYMBOL_server_local_zone = 522,        /* server_local_zone  */
+  YYSYMBOL_server_local_data = 523,        /* server_local_data  */
+  YYSYMBOL_server_local_data_ptr = 524,    /* server_local_data_ptr  */
+  YYSYMBOL_server_minimal_responses = 525, /* server_minimal_responses  */
+  YYSYMBOL_server_rrset_roundrobin = 526,  /* server_rrset_roundrobin  */
+  YYSYMBOL_server_unknown_server_time_limit = 527, /* server_unknown_server_time_limit  */
+  YYSYMBOL_server_max_udp_size = 528,      /* server_max_udp_size  */
+  YYSYMBOL_server_dns64_prefix = 529,      /* server_dns64_prefix  */
+  YYSYMBOL_server_dns64_synthall = 530,    /* server_dns64_synthall  */
+  YYSYMBOL_server_dns64_ignore_aaaa = 531, /* server_dns64_ignore_aaaa  */
+  YYSYMBOL_server_define_tag = 532,        /* server_define_tag  */
+  YYSYMBOL_server_local_zone_tag = 533,    /* server_local_zone_tag  */
+  YYSYMBOL_server_access_control_tag = 534, /* server_access_control_tag  */
+  YYSYMBOL_server_access_control_tag_action = 535, /* server_access_control_tag_action  */
+  YYSYMBOL_server_access_control_tag_data = 536, /* server_access_control_tag_data  */
+  YYSYMBOL_server_local_zone_override = 537, /* server_local_zone_override  */
+  YYSYMBOL_server_access_control_view = 538, /* server_access_control_view  */
+  YYSYMBOL_server_response_ip_tag = 539,   /* server_response_ip_tag  */
+  YYSYMBOL_server_ip_ratelimit = 540,      /* server_ip_ratelimit  */
+  YYSYMBOL_server_ratelimit = 541,         /* server_ratelimit  */
+  YYSYMBOL_server_ip_ratelimit_size = 542, /* server_ip_ratelimit_size  */
+  YYSYMBOL_server_ratelimit_size = 543,    /* server_ratelimit_size  */
+  YYSYMBOL_server_ip_ratelimit_slabs = 544, /* server_ip_ratelimit_slabs  */
+  YYSYMBOL_server_ratelimit_slabs = 545,   /* server_ratelimit_slabs  */
+  YYSYMBOL_server_ratelimit_for_domain = 546, /* server_ratelimit_for_domain  */
+  YYSYMBOL_server_ratelimit_below_domain = 547, /* server_ratelimit_below_domain  */
+  YYSYMBOL_server_ip_ratelimit_factor = 548, /* server_ip_ratelimit_factor  */
+  YYSYMBOL_server_ratelimit_factor = 549,  /* server_ratelimit_factor  */
+  YYSYMBOL_server_ip_ratelimit_backoff = 550, /* server_ip_ratelimit_backoff  */
+  YYSYMBOL_server_ratelimit_backoff = 551, /* server_ratelimit_backoff  */
+  YYSYMBOL_server_outbound_msg_retry = 552, /* server_outbound_msg_retry  */
+  YYSYMBOL_server_low_rtt = 553,           /* server_low_rtt  */
+  YYSYMBOL_server_fast_server_num = 554,   /* server_fast_server_num  */
+  YYSYMBOL_server_fast_server_permil = 555, /* server_fast_server_permil  */
+  YYSYMBOL_server_qname_minimisation = 556, /* server_qname_minimisation  */
+  YYSYMBOL_server_qname_minimisation_strict = 557, /* server_qname_minimisation_strict  */
+  YYSYMBOL_server_pad_responses = 558,     /* server_pad_responses  */
+  YYSYMBOL_server_pad_responses_block_size = 559, /* server_pad_responses_block_size  */
+  YYSYMBOL_server_pad_queries = 560,       /* server_pad_queries  */
+  YYSYMBOL_server_pad_queries_block_size = 561, /* server_pad_queries_block_size  */
+  YYSYMBOL_server_ipsecmod_enabled = 562,  /* server_ipsecmod_enabled  */
+  YYSYMBOL_server_ipsecmod_ignore_bogus = 563, /* server_ipsecmod_ignore_bogus  */
+  YYSYMBOL_server_ipsecmod_hook = 564,     /* server_ipsecmod_hook  */
+  YYSYMBOL_server_ipsecmod_max_ttl = 565,  /* server_ipsecmod_max_ttl  */
+  YYSYMBOL_server_ipsecmod_whitelist = 566, /* server_ipsecmod_whitelist  */
+  YYSYMBOL_server_ipsecmod_strict = 567,   /* server_ipsecmod_strict  */
+  YYSYMBOL_server_edns_client_string = 568, /* server_edns_client_string  */
+  YYSYMBOL_server_edns_client_string_opcode = 569, /* server_edns_client_string_opcode  */
+  YYSYMBOL_stub_name = 570,                /* stub_name  */
+  YYSYMBOL_stub_host = 571,                /* stub_host  */
+  YYSYMBOL_stub_addr = 572,                /* stub_addr  */
+  YYSYMBOL_stub_first = 573,               /* stub_first  */
+  YYSYMBOL_stub_no_cache = 574,            /* stub_no_cache  */
+  YYSYMBOL_stub_ssl_upstream = 575,        /* stub_ssl_upstream  */
+  YYSYMBOL_stub_tcp_upstream = 576,        /* stub_tcp_upstream  */
+  YYSYMBOL_stub_prime = 577,               /* stub_prime  */
+  YYSYMBOL_forward_name = 578,             /* forward_name  */
+  YYSYMBOL_forward_host = 579,             /* forward_host  */
+  YYSYMBOL_forward_addr = 580,             /* forward_addr  */
+  YYSYMBOL_forward_first = 581,            /* forward_first  */
+  YYSYMBOL_forward_no_cache = 582,         /* forward_no_cache  */
+  YYSYMBOL_forward_ssl_upstream = 583,     /* forward_ssl_upstream  */
+  YYSYMBOL_forward_tcp_upstream = 584,     /* forward_tcp_upstream  */
+  YYSYMBOL_auth_name = 585,                /* auth_name  */
+  YYSYMBOL_auth_zonefile = 586,            /* auth_zonefile  */
+  YYSYMBOL_auth_master = 587,              /* auth_master  */
+  YYSYMBOL_auth_url = 588,                 /* auth_url  */
+  YYSYMBOL_auth_allow_notify = 589,        /* auth_allow_notify  */
+  YYSYMBOL_auth_zonemd_check = 590,        /* auth_zonemd_check  */
+  YYSYMBOL_auth_zonemd_reject_absence = 591, /* auth_zonemd_reject_absence  */
+  YYSYMBOL_auth_for_downstream = 592,      /* auth_for_downstream  */
+  YYSYMBOL_auth_for_upstream = 593,        /* auth_for_upstream  */
+  YYSYMBOL_auth_fallback_enabled = 594,    /* auth_fallback_enabled  */
+  YYSYMBOL_view_name = 595,                /* view_name  */
+  YYSYMBOL_view_local_zone = 596,          /* view_local_zone  */
+  YYSYMBOL_view_response_ip = 597,         /* view_response_ip  */
+  YYSYMBOL_view_response_ip_data = 598,    /* view_response_ip_data  */
+  YYSYMBOL_view_local_data = 599,          /* view_local_data  */
+  YYSYMBOL_view_local_data_ptr = 600,      /* view_local_data_ptr  */
+  YYSYMBOL_view_first = 601,               /* view_first  */
+  YYSYMBOL_rcstart = 602,                  /* rcstart  */
+  YYSYMBOL_contents_rc = 603,              /* contents_rc  */
+  YYSYMBOL_content_rc = 604,               /* content_rc  */
+  YYSYMBOL_rc_control_enable = 605,        /* rc_control_enable  */
+  YYSYMBOL_rc_control_port = 606,          /* rc_control_port  */
+  YYSYMBOL_rc_control_interface = 607,     /* rc_control_interface  */
+  YYSYMBOL_rc_control_use_cert = 608,      /* rc_control_use_cert  */
+  YYSYMBOL_rc_server_key_file = 609,       /* rc_server_key_file  */
+  YYSYMBOL_rc_server_cert_file = 610,      /* rc_server_cert_file  */
+  YYSYMBOL_rc_control_key_file = 611,      /* rc_control_key_file  */
+  YYSYMBOL_rc_control_cert_file = 612,     /* rc_control_cert_file  */
+  YYSYMBOL_dtstart = 613,                  /* dtstart  */
+  YYSYMBOL_contents_dt = 614,              /* contents_dt  */
+  YYSYMBOL_content_dt = 615,               /* content_dt  */
+  YYSYMBOL_dt_dnstap_enable = 616,         /* dt_dnstap_enable  */
+  YYSYMBOL_dt_dnstap_bidirectional = 617,  /* dt_dnstap_bidirectional  */
+  YYSYMBOL_dt_dnstap_socket_path = 618,    /* dt_dnstap_socket_path  */
+  YYSYMBOL_dt_dnstap_ip = 619,             /* dt_dnstap_ip  */
+  YYSYMBOL_dt_dnstap_tls = 620,            /* dt_dnstap_tls  */
+  YYSYMBOL_dt_dnstap_tls_server_name = 621, /* dt_dnstap_tls_server_name  */
+  YYSYMBOL_dt_dnstap_tls_cert_bundle = 622, /* dt_dnstap_tls_cert_bundle  */
+  YYSYMBOL_dt_dnstap_tls_client_key_file = 623, /* dt_dnstap_tls_client_key_file  */
+  YYSYMBOL_dt_dnstap_tls_client_cert_file = 624, /* dt_dnstap_tls_client_cert_file  */
+  YYSYMBOL_dt_dnstap_send_identity = 625,  /* dt_dnstap_send_identity  */
+  YYSYMBOL_dt_dnstap_send_version = 626,   /* dt_dnstap_send_version  */
+  YYSYMBOL_dt_dnstap_identity = 627,       /* dt_dnstap_identity  */
+  YYSYMBOL_dt_dnstap_version = 628,        /* dt_dnstap_version  */
+  YYSYMBOL_dt_dnstap_log_resolver_query_messages = 629, /* dt_dnstap_log_resolver_query_messages  */
+  YYSYMBOL_dt_dnstap_log_resolver_response_messages = 630, /* dt_dnstap_log_resolver_response_messages  */
+  YYSYMBOL_dt_dnstap_log_client_query_messages = 631, /* dt_dnstap_log_client_query_messages  */
+  YYSYMBOL_dt_dnstap_log_client_response_messages = 632, /* dt_dnstap_log_client_response_messages  */
+  YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 633, /* dt_dnstap_log_forwarder_query_messages  */
+  YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 634, /* dt_dnstap_log_forwarder_response_messages  */
+  YYSYMBOL_pythonstart = 635,              /* pythonstart  */
+  YYSYMBOL_contents_py = 636,              /* contents_py  */
+  YYSYMBOL_content_py = 637,               /* content_py  */
+  YYSYMBOL_py_script = 638,                /* py_script  */
+  YYSYMBOL_dynlibstart = 639,              /* dynlibstart  */
+  YYSYMBOL_contents_dl = 640,              /* contents_dl  */
+  YYSYMBOL_content_dl = 641,               /* content_dl  */
+  YYSYMBOL_dl_file = 642,                  /* dl_file  */
+  YYSYMBOL_server_disable_dnssec_lame_check = 643, /* server_disable_dnssec_lame_check  */
+  YYSYMBOL_server_log_identity = 644,      /* server_log_identity  */
+  YYSYMBOL_server_response_ip = 645,       /* server_response_ip  */
+  YYSYMBOL_server_response_ip_data = 646,  /* server_response_ip_data  */
+  YYSYMBOL_dnscstart = 647,                /* dnscstart  */
+  YYSYMBOL_contents_dnsc = 648,            /* contents_dnsc  */
+  YYSYMBOL_content_dnsc = 649,             /* content_dnsc  */
+  YYSYMBOL_dnsc_dnscrypt_enable = 650,     /* dnsc_dnscrypt_enable  */
+  YYSYMBOL_dnsc_dnscrypt_port = 651,       /* dnsc_dnscrypt_port  */
+  YYSYMBOL_dnsc_dnscrypt_provider = 652,   /* dnsc_dnscrypt_provider  */
+  YYSYMBOL_dnsc_dnscrypt_provider_cert = 653, /* dnsc_dnscrypt_provider_cert  */
+  YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 654, /* dnsc_dnscrypt_provider_cert_rotated  */
+  YYSYMBOL_dnsc_dnscrypt_secret_key = 655, /* dnsc_dnscrypt_secret_key  */
+  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 656, /* dnsc_dnscrypt_shared_secret_cache_size  */
+  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 657, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
+  YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 658, /* dnsc_dnscrypt_nonce_cache_size  */
+  YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 659, /* dnsc_dnscrypt_nonce_cache_slabs  */
+  YYSYMBOL_cachedbstart = 660,             /* cachedbstart  */
+  YYSYMBOL_contents_cachedb = 661,         /* contents_cachedb  */
+  YYSYMBOL_content_cachedb = 662,          /* content_cachedb  */
+  YYSYMBOL_cachedb_backend_name = 663,     /* cachedb_backend_name  */
+  YYSYMBOL_cachedb_secret_seed = 664,      /* cachedb_secret_seed  */
+  YYSYMBOL_redis_server_host = 665,        /* redis_server_host  */
+  YYSYMBOL_redis_server_port = 666,        /* redis_server_port  */
+  YYSYMBOL_redis_timeout = 667,            /* redis_timeout  */
+  YYSYMBOL_redis_expire_records = 668,     /* redis_expire_records  */
+  YYSYMBOL_server_tcp_connection_limit = 669, /* server_tcp_connection_limit  */
+  YYSYMBOL_ipsetstart = 670,               /* ipsetstart  */
+  YYSYMBOL_contents_ipset = 671,           /* contents_ipset  */
+  YYSYMBOL_content_ipset = 672,            /* content_ipset  */
+  YYSYMBOL_ipset_name_v4 = 673,            /* ipset_name_v4  */
+  YYSYMBOL_ipset_name_v6 = 674             /* ipset_name_v6  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -840,18 +1536,6 @@ typedef int_least16_t yytype_int16;
 typedef short yytype_int16;
 #endif
 
-/* Work around bug in HP-UX 11.23, which defines these macros
-   incorrectly for preprocessor constants.  This workaround can likely
-   be removed in 2023, as HPE has promised support for HP-UX 11.23
-   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
-   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
-#ifdef __hpux
-# undef UINT_LEAST8_MAX
-# undef UINT_LEAST16_MAX
-# define UINT_LEAST8_MAX 255
-# define UINT_LEAST16_MAX 65535
-#endif
-
 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
@@ -949,9 +1633,9 @@ typedef int yy_state_fast_t;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YY_USE(E) ((void) (E))
+# define YYUSE(E) ((void) (E))
 #else
-# define YY_USE(E) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -1118,19 +1802,18 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   687
+#define YYLAST   689
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  324
+#define YYNTOKENS  325
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  349
+#define YYNNTS  350
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  675
+#define YYNRULES  677
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  1003
+#define YYNSTATES  1006
 
-/* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   578
+#define YYMAXUTOK   579
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1201,7 +1884,7 @@ static const yytype_int16 yytranslate[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324
 };
 
 #if YYDEBUG
@@ -1232,50 +1915,50 @@ static const yytype_int16 yyrline[] =
      299,   300,   301,   301,   302,   302,   303,   303,   304,   304,
      305,   305,   305,   306,   306,   306,   307,   307,   307,   308,
      308,   309,   309,   310,   310,   311,   311,   312,   312,   313,
-     313,   314,   314,   317,   330,   331,   332,   332,   332,   332,
-     332,   333,   333,   333,   335,   348,   349,   350,   350,   350,
-     350,   351,   351,   351,   353,   368,   369,   370,   370,   370,
-     370,   371,   371,   371,   373,   393,   394,   395,   395,   395,
-     395,   396,   396,   396,   397,   397,   397,   400,   419,   436,
-     444,   454,   461,   471,   489,   490,   491,   491,   491,   491,
-     491,   492,   492,   492,   493,   493,   493,   493,   495,   504,
-     513,   524,   533,   542,   551,   562,   571,   583,   597,   612,
-     623,   640,   657,   674,   691,   706,   721,   734,   749,   758,
-     767,   776,   785,   794,   803,   812,   821,   830,   839,   848,
-     857,   866,   875,   888,   899,   910,   921,   930,   943,   952,
-     961,   970,   977,   984,   993,  1000,  1009,  1017,  1024,  1031,
-    1039,  1048,  1056,  1072,  1080,  1088,  1096,  1104,  1112,  1121,
-    1130,  1144,  1153,  1162,  1171,  1180,  1189,  1198,  1205,  1212,
-    1238,  1246,  1253,  1260,  1267,  1274,  1282,  1290,  1298,  1305,
-    1316,  1327,  1334,  1343,  1352,  1361,  1370,  1377,  1384,  1391,
-    1407,  1415,  1423,  1433,  1443,  1453,  1467,  1475,  1488,  1499,
-    1507,  1520,  1529,  1538,  1547,  1556,  1566,  1576,  1584,  1597,
-    1606,  1614,  1623,  1631,  1644,  1653,  1663,  1670,  1680,  1690,
-    1700,  1710,  1720,  1730,  1740,  1750,  1757,  1764,  1771,  1780,
-    1789,  1798,  1807,  1814,  1824,  1844,  1851,  1869,  1882,  1895,
-    1908,  1917,  1926,  1935,  1944,  1954,  1964,  1975,  1984,  1993,
-    2002,  2011,  2020,  2029,  2038,  2051,  2064,  2073,  2080,  2089,
-    2098,  2107,  2116,  2125,  2133,  2146,  2154,  2199,  2206,  2221,
-    2231,  2241,  2248,  2255,  2262,  2271,  2279,  2293,  2314,  2335,
-    2347,  2359,  2371,  2380,  2401,  2410,  2419,  2427,  2435,  2448,
-    2461,  2476,  2491,  2500,  2509,  2519,  2529,  2538,  2544,  2553,
-    2562,  2572,  2582,  2592,  2601,  2611,  2620,  2633,  2646,  2658,
-    2672,  2684,  2698,  2707,  2719,  2729,  2736,  2743,  2752,  2761,
-    2771,  2781,  2791,  2801,  2808,  2815,  2824,  2833,  2843,  2853,
-    2863,  2870,  2877,  2884,  2892,  2902,  2912,  2922,  2932,  2942,
-    2952,  2998,  3008,  3016,  3024,  3039,  3048,  3053,  3054,  3055,
-    3055,  3055,  3056,  3056,  3056,  3057,  3057,  3059,  3069,  3078,
-    3085,  3092,  3099,  3106,  3113,  3120,  3125,  3126,  3127,  3127,
-    3127,  3128,  3128,  3128,  3129,  3130,  3130,  3131,  3131,  3132,
-    3132,  3133,  3134,  3135,  3136,  3137,  3138,  3140,  3149,  3159,
-    3166,  3173,  3182,  3189,  3196,  3203,  3210,  3219,  3228,  3235,
-    3242,  3252,  3262,  3272,  3282,  3292,  3302,  3307,  3308,  3309,
-    3311,  3317,  3322,  3323,  3324,  3326,  3332,  3342,  3349,  3358,
-    3366,  3371,  3372,  3374,  3374,  3374,  3375,  3375,  3376,  3377,
-    3378,  3379,  3380,  3382,  3392,  3401,  3408,  3417,  3424,  3433,
-    3441,  3454,  3462,  3475,  3480,  3481,  3482,  3482,  3483,  3483,
-    3483,  3484,  3486,  3498,  3510,  3522,  3537,  3550,  3563,  3574,
-    3579,  3580,  3581,  3581,  3583,  3598
+     313,   314,   314,   315,   318,   331,   332,   333,   333,   333,
+     333,   333,   334,   334,   334,   336,   349,   350,   351,   351,
+     351,   351,   352,   352,   352,   354,   369,   370,   371,   371,
+     371,   371,   372,   372,   372,   374,   394,   395,   396,   396,
+     396,   396,   397,   397,   397,   398,   398,   398,   401,   420,
+     437,   445,   455,   462,   472,   490,   491,   492,   492,   492,
+     492,   492,   493,   493,   493,   494,   494,   494,   494,   496,
+     505,   514,   525,   534,   543,   552,   563,   572,   584,   598,
+     613,   624,   641,   658,   675,   692,   707,   722,   735,   750,
+     759,   768,   777,   786,   795,   804,   811,   820,   829,   838,
+     847,   856,   865,   874,   883,   896,   907,   918,   929,   938,
+     951,   960,   969,   978,   985,   992,  1001,  1008,  1017,  1025,
+    1032,  1039,  1047,  1056,  1064,  1080,  1088,  1096,  1104,  1112,
+    1120,  1129,  1138,  1152,  1161,  1170,  1179,  1188,  1197,  1206,
+    1213,  1220,  1246,  1254,  1261,  1268,  1275,  1282,  1290,  1298,
+    1306,  1313,  1324,  1335,  1342,  1351,  1360,  1369,  1378,  1385,
+    1392,  1399,  1415,  1423,  1431,  1441,  1451,  1461,  1475,  1483,
+    1496,  1507,  1515,  1528,  1537,  1546,  1555,  1564,  1574,  1584,
+    1592,  1605,  1614,  1622,  1631,  1639,  1652,  1661,  1671,  1678,
+    1688,  1698,  1708,  1718,  1728,  1738,  1748,  1758,  1765,  1772,
+    1779,  1788,  1797,  1806,  1815,  1822,  1832,  1852,  1859,  1877,
+    1890,  1903,  1916,  1925,  1934,  1943,  1952,  1962,  1972,  1983,
+    1992,  2001,  2010,  2019,  2028,  2037,  2046,  2059,  2072,  2081,
+    2088,  2097,  2106,  2115,  2124,  2133,  2141,  2154,  2162,  2207,
+    2214,  2229,  2239,  2249,  2256,  2263,  2270,  2279,  2287,  2301,
+    2322,  2343,  2355,  2367,  2379,  2388,  2409,  2418,  2427,  2435,
+    2443,  2456,  2469,  2484,  2499,  2508,  2517,  2527,  2537,  2546,
+    2552,  2561,  2570,  2580,  2590,  2600,  2609,  2619,  2628,  2641,
+    2654,  2666,  2680,  2692,  2706,  2715,  2727,  2737,  2744,  2751,
+    2760,  2769,  2779,  2789,  2799,  2809,  2816,  2823,  2832,  2841,
+    2851,  2861,  2871,  2878,  2885,  2892,  2900,  2910,  2920,  2930,
+    2940,  2950,  2960,  3006,  3016,  3024,  3032,  3047,  3056,  3061,
+    3062,  3063,  3063,  3063,  3064,  3064,  3064,  3065,  3065,  3067,
+    3077,  3086,  3093,  3100,  3107,  3114,  3121,  3128,  3133,  3134,
+    3135,  3135,  3135,  3136,  3136,  3136,  3137,  3138,  3138,  3139,
+    3139,  3140,  3140,  3141,  3142,  3143,  3144,  3145,  3146,  3148,
+    3157,  3167,  3174,  3181,  3190,  3197,  3204,  3211,  3218,  3227,
+    3236,  3243,  3250,  3260,  3270,  3280,  3290,  3300,  3310,  3315,
+    3316,  3317,  3319,  3325,  3330,  3331,  3332,  3334,  3340,  3350,
+    3357,  3366,  3374,  3379,  3380,  3382,  3382,  3382,  3383,  3383,
+    3384,  3385,  3386,  3387,  3388,  3390,  3400,  3409,  3416,  3425,
+    3432,  3441,  3449,  3462,  3470,  3483,  3488,  3489,  3490,  3490,
+    3491,  3491,  3491,  3492,  3494,  3506,  3518,  3530,  3545,  3558,
+    3571,  3582,  3587,  3588,  3589,  3589,  3591,  3606
 };
 #endif
 
@@ -1414,18 +2097,18 @@ static const char *const yytname[] =
   "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE",
   "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID",
   "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK",
-  "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", "$accept",
-  "toplevelvars", "toplevelvar", "force_toplevel", "serverstart",
-  "contents_server", "content_server", "stubstart", "contents_stub",
-  "content_stub", "forwardstart", "contents_forward", "content_forward",
-  "viewstart", "contents_view", "content_view", "authstart",
-  "contents_auth", "content_auth", "rpz_tag", "rpz_action_override",
-  "rpz_cname_override", "rpz_log", "rpz_log_name",
-  "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz",
-  "server_num_threads", "server_verbosity", "server_statistics_interval",
-  "server_statistics_cumulative", "server_extended_statistics",
-  "server_shm_enable", "server_shm_key", "server_port",
-  "server_send_client_subnet", "server_client_subnet_zone",
+  "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA",
+  "VAR_INTERFACE_AUTOMATIC_PORTS", "$accept", "toplevelvars",
+  "toplevelvar", "force_toplevel", "serverstart", "contents_server",
+  "content_server", "stubstart", "contents_stub", "content_stub",
+  "forwardstart", "contents_forward", "content_forward", "viewstart",
+  "contents_view", "content_view", "authstart", "contents_auth",
+  "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override",
+  "rpz_log", "rpz_log_name", "rpz_signal_nxdomain_ra", "rpzstart",
+  "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity",
+  "server_statistics_interval", "server_statistics_cumulative",
+  "server_extended_statistics", "server_shm_enable", "server_shm_key",
+  "server_port", "server_send_client_subnet", "server_client_subnet_zone",
   "server_client_subnet_always_forward", "server_client_subnet_opcode",
   "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6",
   "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6",
@@ -1433,66 +2116,67 @@ static const char *const yytname[] =
   "server_interface", "server_outgoing_interface", "server_outgoing_range",
   "server_outgoing_port_permit", "server_outgoing_port_avoid",
   "server_outgoing_num_tcp", "server_incoming_num_tcp",
-  "server_interface_automatic", "server_do_ip4", "server_do_ip6",
-  "server_do_udp", "server_do_tcp", "server_prefer_ip4",
-  "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss",
-  "server_tcp_idle_timeout", "server_max_reuse_tcp_queries",
-  "server_tcp_reuse_timeout", "server_tcp_auth_query_timeout",
-  "server_tcp_keepalive", "server_tcp_keepalive_timeout",
-  "server_tcp_upstream", "server_udp_upstream_without_downstream",
-  "server_ssl_upstream", "server_ssl_service_key",
-  "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle",
-  "server_tls_win_cert", "server_tls_additional_port",
-  "server_tls_ciphers", "server_tls_ciphersuites",
-  "server_tls_session_ticket_keys", "server_tls_use_sni",
-  "server_https_port", "server_http_endpoint", "server_http_max_streams",
-  "server_http_query_buffer_size", "server_http_response_buffer_size",
-  "server_http_nodelay", "server_http_notls_downstream",
-  "server_use_systemd", "server_do_daemonize", "server_use_syslog",
-  "server_log_time_ascii", "server_log_queries", "server_log_replies",
-  "server_log_tag_queryreply", "server_log_servfail",
-  "server_log_local_actions", "server_chroot", "server_username",
-  "server_directory", "server_logfile", "server_pidfile",
-  "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor",
-  "server_auto_trust_anchor_file", "server_trust_anchor_file",
-  "server_trusted_keys_file", "server_trust_anchor",
-  "server_trust_anchor_signaling", "server_root_key_sentinel",
-  "server_domain_insecure", "server_hide_identity", "server_hide_version",
-  "server_hide_trustanchor", "server_hide_http_user_agent",
-  "server_identity", "server_version", "server_http_user_agent",
-  "server_nsid", "server_so_rcvbuf", "server_so_sndbuf",
-  "server_so_reuseport", "server_ip_transparent", "server_ip_freebind",
-  "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size",
-  "server_msg_buffer_size", "server_msg_cache_size",
-  "server_msg_cache_slabs", "server_num_queries_per_thread",
-  "server_jostle_timeout", "server_delay_close", "server_udp_connect",
-  "server_unblock_lan_zones", "server_insecure_lan_zones",
-  "server_rrset_cache_size", "server_rrset_cache_slabs",
-  "server_infra_host_ttl", "server_infra_lame_ttl",
-  "server_infra_cache_numhosts", "server_infra_cache_lame_size",
-  "server_infra_cache_slabs", "server_infra_cache_min_rtt",
-  "server_infra_keep_probing", "server_target_fetch_policy",
-  "server_harden_short_bufsize", "server_harden_large_queries",
-  "server_harden_glue", "server_harden_dnssec_stripped",
-  "server_harden_below_nxdomain", "server_harden_referral_path",
-  "server_harden_algo_downgrade", "server_use_caps_for_id",
-  "server_caps_whitelist", "server_private_address",
-  "server_private_domain", "server_prefetch", "server_prefetch_key",
-  "server_deny_any", "server_unwanted_reply_threshold",
-  "server_do_not_query_address", "server_do_not_query_localhost",
-  "server_access_control", "server_module_conf",
-  "server_val_override_date", "server_val_sig_skew_min",
-  "server_val_sig_skew_max", "server_val_max_restart",
-  "server_cache_max_ttl", "server_cache_max_negative_ttl",
-  "server_cache_min_ttl", "server_bogus_ttl",
-  "server_val_clean_additional", "server_val_permissive_mode",
-  "server_aggressive_nsec", "server_ignore_cd_flag",
-  "server_serve_expired", "server_serve_expired_ttl",
-  "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl",
-  "server_serve_expired_client_timeout", "server_serve_original_ttl",
-  "server_fake_dsa", "server_fake_sha1", "server_val_log_level",
-  "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode",
-  "server_add_holddown", "server_del_holddown", "server_keep_missing",
+  "server_interface_automatic", "server_interface_automatic_ports",
+  "server_do_ip4", "server_do_ip6", "server_do_udp", "server_do_tcp",
+  "server_prefer_ip4", "server_prefer_ip6", "server_tcp_mss",
+  "server_outgoing_tcp_mss", "server_tcp_idle_timeout",
+  "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout",
+  "server_tcp_auth_query_timeout", "server_tcp_keepalive",
+  "server_tcp_keepalive_timeout", "server_tcp_upstream",
+  "server_udp_upstream_without_downstream", "server_ssl_upstream",
+  "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port",
+  "server_tls_cert_bundle", "server_tls_win_cert",
+  "server_tls_additional_port", "server_tls_ciphers",
+  "server_tls_ciphersuites", "server_tls_session_ticket_keys",
+  "server_tls_use_sni", "server_https_port", "server_http_endpoint",
+  "server_http_max_streams", "server_http_query_buffer_size",
+  "server_http_response_buffer_size", "server_http_nodelay",
+  "server_http_notls_downstream", "server_use_systemd",
+  "server_do_daemonize", "server_use_syslog", "server_log_time_ascii",
+  "server_log_queries", "server_log_replies", "server_log_tag_queryreply",
+  "server_log_servfail", "server_log_local_actions", "server_chroot",
+  "server_username", "server_directory", "server_logfile",
+  "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
+  "server_dlv_anchor", "server_auto_trust_anchor_file",
+  "server_trust_anchor_file", "server_trusted_keys_file",
+  "server_trust_anchor", "server_trust_anchor_signaling",
+  "server_root_key_sentinel", "server_domain_insecure",
+  "server_hide_identity", "server_hide_version", "server_hide_trustanchor",
+  "server_hide_http_user_agent", "server_identity", "server_version",
+  "server_http_user_agent", "server_nsid", "server_so_rcvbuf",
+  "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
+  "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size",
+  "server_edns_buffer_size", "server_msg_buffer_size",
+  "server_msg_cache_size", "server_msg_cache_slabs",
+  "server_num_queries_per_thread", "server_jostle_timeout",
+  "server_delay_close", "server_udp_connect", "server_unblock_lan_zones",
+  "server_insecure_lan_zones", "server_rrset_cache_size",
+  "server_rrset_cache_slabs", "server_infra_host_ttl",
+  "server_infra_lame_ttl", "server_infra_cache_numhosts",
+  "server_infra_cache_lame_size", "server_infra_cache_slabs",
+  "server_infra_cache_min_rtt", "server_infra_keep_probing",
+  "server_target_fetch_policy", "server_harden_short_bufsize",
+  "server_harden_large_queries", "server_harden_glue",
+  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
+  "server_harden_referral_path", "server_harden_algo_downgrade",
+  "server_use_caps_for_id", "server_caps_whitelist",
+  "server_private_address", "server_private_domain", "server_prefetch",
+  "server_prefetch_key", "server_deny_any",
+  "server_unwanted_reply_threshold", "server_do_not_query_address",
+  "server_do_not_query_localhost", "server_access_control",
+  "server_module_conf", "server_val_override_date",
+  "server_val_sig_skew_min", "server_val_sig_skew_max",
+  "server_val_max_restart", "server_cache_max_ttl",
+  "server_cache_max_negative_ttl", "server_cache_min_ttl",
+  "server_bogus_ttl", "server_val_clean_additional",
+  "server_val_permissive_mode", "server_aggressive_nsec",
+  "server_ignore_cd_flag", "server_serve_expired",
+  "server_serve_expired_ttl", "server_serve_expired_ttl_reset",
+  "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout",
+  "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1",
+  "server_val_log_level", "server_val_nsec3_keysize_iterations",
+  "server_zonemd_permissive_mode", "server_add_holddown",
+  "server_del_holddown", "server_keep_missing",
   "server_permit_small_holddown", "server_key_cache_size",
   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
@@ -1600,7 +2284,7 @@ static const yytype_int16 yytoknum[] =
      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
      565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
-     575,   576,   577,   578
+     575,   576,   577,   578,   579
 };
 #endif
 
@@ -1644,8 +2328,7 @@ static const yytype_int16 yypact[] =
      277,   278,   279,   280,   283,   284,   285,   286,   287,   288,
      289,   290,   291,   292,   293,   294,   296,   297,   298,   300,
      301,   302,   304,   338,   339,   340,   341,   345,   346,   347,
-     389,   390,   391,   392,   393,   394,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+     389,   390,   391,   392,   393,   394,   395,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
@@ -1666,59 +2349,60 @@ static const yytype_int16 yypact[] =
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   395,   396,
-     397,   403,   407,   408,   435,   436,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,   437,   439,   440,   448,   461,
-     462,   463,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-     464,   465,   466,   467,   468,   469,   470,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,   471,   472,   473,   474,   475,
-     476,   477,   478,   479,   480,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,   523,   525,   544,   545,
-     546,   547,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,   548,   549,   550,   551,   552,
-     553,   554,   565,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,   566,   567,   568,   569,   570,   571,   573,   574,
-     575,   576,   577,   578,   579,   582,   585,   588,   589,   598,
-     599,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,   600,  -310,  -310,   602,  -310,  -310,   603,   604,   605,
-     606,   607,   608,   609,   614,   615,   616,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   617,   618,
-     619,   620,   621,   622,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,   623,   624,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+     396,   397,   403,   407,   408,   435,   436,   437,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,   439,   440,   448,
+     461,   462,   463,   464,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,   465,   466,   467,   468,   469,   470,   471,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,   472,   473,   474,
+     475,   476,   477,   478,   479,   480,   523,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   525,   544,
+     545,   546,   547,   548,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,   549,   550,   551,
+     552,   553,   554,   565,   566,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,   567,   568,   569,   570,   571,   573,
+     574,   575,   576,   577,   578,   579,   582,   585,   588,   589,
+     598,   599,   600,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,   602,  -310,  -310,   603,  -310,  -310,   604,
+     605,   606,   607,   608,   609,   614,   615,   616,   618,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+     619,   620,   621,   622,   623,   624,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,   625,   626,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,   625,   626,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   627,   628,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,   627,   628,   629,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-     630,   631,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,   632,   633,   634,   635,   636,   637,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   629,   630,
+     631,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,   632,   633,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,   634,   635,   636,   637,   638,
+     639,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,   638,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,   639,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,   640,  -310,  -310,   641,   642,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,   640,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,   641,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,   642,  -310,  -310,   643,
+     644,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,   643,   644,   645,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310
+    -310,  -310,  -310,  -310,   645,   646,   647,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1726,10 +2410,10 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_int16 yydefact[] =
 {
-       2,     0,     1,    18,    19,   243,   254,   556,   616,   575,
-     264,   630,   653,   274,   669,   293,   621,     3,    17,    21,
-     245,   256,   266,   276,   295,   558,   577,   618,   623,   632,
-     655,   671,     4,     5,     6,    10,    14,    15,     8,     9,
+       2,     0,     1,    18,    19,   244,   255,   558,   618,   577,
+     265,   632,   655,   275,   671,   294,   623,     3,    17,    21,
+     246,   257,   267,   277,   296,   560,   579,   620,   625,   634,
+     657,   673,     4,     5,     6,    10,    14,    15,     8,     9,
        7,    16,    11,    12,    13,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1752,81 +2436,81 @@ static const yytype_int16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    20,    22,    23,    88,
-      91,   100,   206,   207,    24,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,    37,    79,    25,    92,    93,
-      48,    72,    87,    26,    27,    30,    31,    28,    29,    32,
-      33,    34,   240,   241,   242,    35,    36,   124,   218,   125,
-     127,   128,   129,   220,   225,   221,   232,   233,   234,   235,
-     130,   131,   132,   133,   134,   135,   136,   202,    89,    78,
-     104,   122,   123,   230,   227,   126,    38,    39,    40,    41,
-      42,    80,    94,    95,   111,    66,    76,    67,   210,   211,
-     105,    58,    59,   209,    62,    60,    61,    63,   238,   115,
-     119,   140,   150,   180,   153,   231,   116,    73,    43,    44,
-      45,   102,   141,   142,   143,   144,    46,    47,    49,    50,
-      52,    53,    51,   148,   154,    54,    55,    56,    64,    83,
-     120,    97,   149,    90,   176,    98,    99,   117,   118,   228,
-     103,    57,    81,    84,    65,    68,   106,   107,   108,    82,
-     177,   109,    69,    70,    71,   219,   121,   194,   195,   196,
-     197,   198,   199,   200,   208,   110,    77,   239,   112,   113,
-     114,   178,    74,    75,    96,    85,    86,   101,   137,   138,
-     229,   139,   145,   146,   147,   181,   182,   184,   186,   187,
-     185,   188,   203,   151,   152,   157,   158,   155,   156,   159,
-     160,   162,   161,   164,   163,   165,   222,   224,   223,   179,
-     189,   190,   191,   192,   193,   212,   214,   213,   215,   216,
-     217,   236,   237,   183,   201,   204,   205,   226,     0,     0,
-       0,     0,     0,     0,     0,     0,   244,   246,   247,   248,
-     250,   251,   252,   253,   249,     0,     0,     0,     0,     0,
-       0,     0,   255,   257,   258,   259,   260,   261,   262,   263,
-       0,     0,     0,     0,     0,     0,     0,   265,   267,   268,
-     271,   272,   269,   273,   270,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   275,   277,   278,   279,   280,
-     284,   285,   286,   281,   282,   283,     0,     0,     0,     0,
-       0,     0,   298,   302,   303,   304,   305,   306,   294,   296,
-     297,   299,   300,   301,   307,     0,     0,     0,     0,     0,
-       0,     0,     0,   557,   559,   561,   560,   566,   562,   563,
-     564,   565,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    20,    22,    23,
+      88,    91,   100,   206,   207,    24,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    37,    79,    25,    92,
+      93,    48,    72,    87,   243,    26,    27,    30,    31,    28,
+      29,    32,    33,    34,   240,   241,   242,    35,    36,   124,
+     218,   125,   127,   128,   129,   220,   225,   221,   232,   233,
+     234,   235,   130,   131,   132,   133,   134,   135,   136,   202,
+      89,    78,   104,   122,   123,   230,   227,   126,    38,    39,
+      40,    41,    42,    80,    94,    95,   111,    66,    76,    67,
+     210,   211,   105,    58,    59,   209,    62,    60,    61,    63,
+     238,   115,   119,   140,   150,   180,   153,   231,   116,    73,
+      43,    44,    45,   102,   141,   142,   143,   144,    46,    47,
+      49,    50,    52,    53,    51,   148,   154,    54,    55,    56,
+      64,    83,   120,    97,   149,    90,   176,    98,    99,   117,
+     118,   228,   103,    57,    81,    84,    65,    68,   106,   107,
+     108,    82,   177,   109,    69,    70,    71,   219,   121,   194,
+     195,   196,   197,   198,   199,   200,   208,   110,    77,   239,
+     112,   113,   114,   178,    74,    75,    96,    85,    86,   101,
+     137,   138,   229,   139,   145,   146,   147,   181,   182,   184,
+     186,   187,   185,   188,   203,   151,   152,   157,   158,   155,
+     156,   159,   160,   162,   161,   164,   163,   165,   222,   224,
+     223,   179,   189,   190,   191,   192,   193,   212,   214,   213,
+     215,   216,   217,   236,   237,   183,   201,   204,   205,   226,
+       0,     0,     0,     0,     0,     0,     0,     0,   245,   247,
+     248,   249,   251,   252,   253,   254,   250,     0,     0,     0,
+       0,     0,     0,     0,   256,   258,   259,   260,   261,   262,
+     263,   264,     0,     0,     0,     0,     0,     0,     0,   266,
+     268,   269,   272,   273,   270,   274,   271,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   276,   278,   279,
+     280,   281,   285,   286,   287,   282,   283,   284,     0,     0,
+       0,     0,     0,     0,   299,   303,   304,   305,   306,   307,
+     295,   297,   298,   300,   301,   302,   308,     0,     0,     0,
+       0,     0,     0,     0,     0,   559,   561,   563,   562,   568,
+     564,   565,   566,   567,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   576,   578,   580,   579,   581,   582,   583,   584,   585,
+       0,     0,     0,   578,   580,   582,   581,   583,   584,   585,
      586,   587,   588,   589,   590,   591,   592,   593,   594,   595,
-     596,     0,   617,   619,     0,   622,   624,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   631,   633,   634,
-     635,   637,   638,   636,   639,   640,   641,   642,     0,     0,
-       0,     0,     0,     0,   654,   656,   657,   658,   659,   660,
-     661,     0,     0,   670,   672,   673,   309,   308,   315,   328,
-     326,   338,   334,   335,   339,   336,   337,   340,   341,   342,
-     346,   347,   377,   378,   379,   380,   381,   409,   410,   411,
-     417,   418,   331,   419,   420,   423,   421,   422,   426,   427,
-     428,   442,   392,   393,   396,   397,   429,   445,   386,   388,
-     446,   453,   454,   455,   332,   408,   473,   474,   387,   467,
-     370,   327,   382,   443,   450,   430,     0,     0,   477,   333,
-     310,   369,   434,   311,   329,   330,   383,   384,   475,   432,
-     436,   437,   344,   343,   312,   478,   412,   441,   371,   391,
-     447,   448,   449,   452,   466,   385,   471,   469,   470,   400,
-     407,   438,   439,   401,   402,   431,   457,   372,   373,   376,
-     348,   350,   345,   351,   352,   353,   354,   361,   362,   363,
-     364,   365,   366,   367,   479,   480,   482,   413,   414,   415,
-     416,   424,   425,   483,   484,   485,     0,     0,     0,   433,
-     403,   405,   626,   494,   498,   496,   495,   499,   497,   506,
-       0,     0,   502,   503,   504,   505,   316,   317,   318,   319,
-     320,   321,   322,   323,   324,   325,   435,   451,   472,   510,
-     511,   404,   486,     0,     0,     0,     0,     0,     0,   458,
-     459,   460,   461,   462,   463,   464,   465,   627,   394,   395,
-     398,   389,   456,   368,   313,   314,   390,   512,   513,   514,
-     515,   516,   518,   517,   519,   520,   521,   349,   356,   507,
-     509,   508,   355,     0,   375,   440,   481,   374,   406,   357,
-     358,   360,   359,     0,   523,   399,   468,   524,   525,   526,
-     531,   529,   530,   527,   528,   532,   533,   534,   535,   537,
-     538,   536,   549,     0,   553,   554,     0,     0,   555,   539,
-     547,   540,   541,   542,   546,   548,   543,   544,   545,   287,
-     288,   289,   290,   291,   292,   567,   569,   568,   571,   572,
-     573,   574,   570,   597,   599,   600,   601,   602,   603,   604,
-     605,   606,   607,   598,   608,   609,   610,   611,   612,   613,
-     614,   615,   620,   625,   643,   644,   645,   648,   646,   647,
-     649,   650,   651,   652,   662,   663,   664,   665,   666,   667,
-     674,   675,   444,   476,   493,   628,   629,   500,   501,   487,
-     488,     0,     0,     0,   492,   668,   522,   550,   551,   552,
-     491,   489,   490
+     596,   597,   598,     0,   619,   621,     0,   624,   626,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   633,
+     635,   636,   637,   639,   640,   638,   641,   642,   643,   644,
+       0,     0,     0,     0,     0,     0,   656,   658,   659,   660,
+     661,   662,   663,     0,     0,   672,   674,   675,   310,   309,
+     316,   329,   327,   340,   336,   337,   341,   338,   339,   342,
+     343,   344,   348,   349,   379,   380,   381,   382,   383,   411,
+     412,   413,   419,   420,   332,   421,   422,   425,   423,   424,
+     428,   429,   430,   444,   394,   395,   398,   399,   431,   447,
+     388,   390,   448,   455,   456,   457,   333,   410,   475,   476,
+     389,   469,   372,   328,   384,   445,   452,   432,     0,     0,
+     479,   334,   311,   371,   436,   312,   330,   331,   385,   386,
+     477,   434,   438,   439,   346,   345,   313,   480,   414,   443,
+     373,   393,   449,   450,   451,   454,   468,   387,   473,   471,
+     472,   402,   409,   440,   441,   403,   404,   433,   459,   374,
+     375,   378,   350,   352,   347,   353,   354,   355,   356,   363,
+     364,   365,   366,   367,   368,   369,   481,   482,   484,   415,
+     416,   417,   418,   426,   427,   485,   486,   487,     0,     0,
+       0,   435,   405,   407,   628,   496,   500,   498,   497,   501,
+     499,   508,     0,     0,   504,   505,   506,   507,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   437,   453,
+     474,   512,   513,   406,   488,     0,     0,     0,     0,     0,
+       0,   460,   461,   462,   463,   464,   465,   466,   467,   629,
+     396,   397,   400,   391,   458,   370,   314,   315,   392,   514,
+     515,   516,   517,   518,   520,   519,   521,   522,   523,   351,
+     358,   509,   511,   510,   357,     0,   377,   442,   483,   376,
+     408,   359,   360,   362,   361,     0,   525,   401,   470,   335,
+     526,   527,   528,   533,   531,   532,   529,   530,   534,   535,
+     536,   537,   539,   540,   538,   551,     0,   555,   556,     0,
+       0,   557,   541,   549,   542,   543,   544,   548,   550,   545,
+     546,   547,   288,   289,   290,   291,   292,   293,   569,   571,
+     570,   573,   574,   575,   576,   572,   599,   601,   602,   603,
+     604,   605,   606,   607,   608,   609,   600,   610,   611,   612,
+     613,   614,   615,   616,   617,   622,   627,   645,   646,   647,
+     650,   648,   649,   651,   652,   653,   654,   664,   665,   666,
+     667,   668,   669,   676,   677,   446,   478,   495,   630,   631,
+     502,   503,   489,   490,     0,     0,     0,   494,   670,   524,
+     552,   553,   554,   493,   491,   492
 };
 
   /* YYPGOTO[NTERM-NUM].  */
@@ -1857,56 +2541,56 @@ static const yytype_int16 yypgoto[] =
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   -27,
-     646,   647,   648,   649,  -310,  -310,   650,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+     -27,   648,   649,   650,   651,  -310,  -310,   652,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
     -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
-    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-       0,     1,    17,    18,    19,    32,   266,    20,    33,   496,
-      21,    34,   512,    22,    35,   527,    23,    36,   545,   562,
-     563,   564,   565,   566,   567,    24,    37,   568,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
-     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
-     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
-     369,   370,   371,   372,   373,   374,   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,   412,   413,   414,   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,   441,   442,   443,   444,   445,   446,   447,   448,
-     449,   450,   451,   452,   453,   454,   455,   456,   457,   458,
-     459,   460,   461,   462,   463,   464,   465,   466,   467,   468,
-     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
-     479,   480,   481,   482,   497,   498,   499,   500,   501,   502,
-     503,   504,   513,   514,   515,   516,   517,   518,   519,   546,
-     547,   548,   549,   550,   551,   552,   553,   554,   555,   528,
-     529,   530,   531,   532,   533,   534,    25,    38,   583,   584,
-     585,   586,   587,   588,   589,   590,   591,    26,    39,   611,
-     612,   613,   614,   615,   616,   617,   618,   619,   620,   621,
-     622,   623,   624,   625,   626,   627,   628,   629,   630,    27,
-      40,   632,   633,    28,    41,   635,   636,   483,   484,   485,
-     486,    29,    42,   647,   648,   649,   650,   651,   652,   653,
-     654,   655,   656,   657,    30,    43,   664,   665,   666,   667,
-     668,   669,   670,   487,    31,    44,   673,   674,   675
+      -1,     1,    17,    18,    19,    32,   267,    20,    33,   498,
+      21,    34,   514,    22,    35,   529,    23,    36,   547,   564,
+     565,   566,   567,   568,   569,    24,    37,   570,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
+     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
+     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
+     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
+     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
+     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
+     370,   371,   372,   373,   374,   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,   412,   413,   414,   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,   441,   442,   443,   444,   445,   446,   447,   448,   449,
+     450,   451,   452,   453,   454,   455,   456,   457,   458,   459,
+     460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
+     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
+     480,   481,   482,   483,   484,   499,   500,   501,   502,   503,
+     504,   505,   506,   515,   516,   517,   518,   519,   520,   521,
+     548,   549,   550,   551,   552,   553,   554,   555,   556,   557,
+     530,   531,   532,   533,   534,   535,   536,    25,    38,   585,
+     586,   587,   588,   589,   590,   591,   592,   593,    26,    39,
+     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
+     623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
+      27,    40,   634,   635,    28,    41,   637,   638,   485,   486,
+     487,   488,    29,    42,   649,   650,   651,   652,   653,   654,
+     655,   656,   657,   658,   659,    30,    43,   666,   667,   668,
+     669,   670,   671,   672,   489,    31,    44,   675,   676,   677
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1914,75 +2598,75 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-       2,   535,   520,   671,   672,   631,   488,   634,   489,   490,
-     569,     3,     4,   505,   676,   535,   677,   678,   679,   680,
-     681,   506,   507,   637,   638,   639,   640,   641,   642,   643,
-     644,   645,   646,   682,   683,   684,   685,   686,   521,   522,
-     658,   659,   660,   661,   662,   663,     5,   687,   688,   689,
-     690,   691,     6,   692,   693,   575,   576,   577,   578,   579,
-     580,   581,   582,   694,   695,   523,   696,   697,   698,   699,
-     700,   491,   592,   593,   594,   595,   596,   597,   598,   599,
-     600,   601,   602,   603,   604,   605,   606,   607,   608,   609,
-     610,   701,   702,   703,   704,   705,     7,   706,   707,   708,
-     709,   710,   711,   712,   492,   713,   714,   493,   715,   716,
-     508,   717,   509,   718,     8,   510,   494,   719,   720,   721,
-     722,   723,   724,   725,   726,   727,   728,   729,   730,   731,
-     732,   733,   734,   735,   736,   737,   738,   739,   740,   741,
-     742,   743,   744,   745,   746,   747,   524,   525,   748,   749,
-     750,   751,   752,   753,   754,   755,   756,   757,   758,   759,
-     760,   761,   762,   763,   764,   765,   766,   767,     9,   768,
-     769,   770,   771,   772,   773,   774,   775,   776,   777,   778,
-     779,   780,   781,   782,   783,   784,   785,   786,   787,   526,
-     788,   789,   790,   791,   792,   793,   794,   795,   796,   797,
-     798,   799,   800,   801,   802,   803,   804,   805,   806,   807,
-     808,   809,   810,   811,   812,   813,   814,   815,   816,   817,
-     818,   819,   820,   821,   822,   823,   824,   825,   826,   827,
-      10,   828,   829,   830,   831,   832,   833,   834,   537,   538,
-     539,   540,   835,   836,   837,   838,   839,   840,   542,   841,
-     536,    11,   537,   538,   539,   540,   541,   495,   842,   843,
-     844,   845,   542,   511,   846,   847,   556,   557,   558,   559,
-     560,   848,    12,   849,   850,   851,   852,   853,   854,   561,
-     855,    13,   856,   857,   858,   859,   860,   861,   862,   863,
-     864,   543,   544,   865,   866,   867,   868,   869,   870,   871,
-     872,   873,   874,   875,   876,    14,   877,   878,   879,    15,
-     880,   881,   882,     0,   883,    16,    45,    46,    47,    48,
+       2,   537,   522,   673,   674,   633,   490,   636,   491,   492,
+     571,     3,     4,   507,   678,   537,   679,   680,   681,   682,
+     683,   508,   509,   639,   640,   641,   642,   643,   644,   645,
+     646,   647,   648,   684,   685,   686,   687,   688,   523,   524,
+     660,   661,   662,   663,   664,   665,     5,   689,   690,   691,
+     692,   693,     6,   694,   695,   577,   578,   579,   580,   581,
+     582,   583,   584,   696,   697,   525,   698,   699,   700,   701,
+     702,   493,   594,   595,   596,   597,   598,   599,   600,   601,
+     602,   603,   604,   605,   606,   607,   608,   609,   610,   611,
+     612,   703,   704,   705,   706,   707,     7,   708,   709,   710,
+     711,   712,   713,   714,   494,   715,   716,   495,   717,   718,
+     510,   719,   511,   720,     8,   512,   496,   721,   722,   723,
+     724,   725,   726,   727,   728,   729,   730,   731,   732,   733,
+     734,   735,   736,   737,   738,   739,   740,   741,   742,   743,
+     744,   745,   746,   747,   748,   749,   526,   527,   750,   751,
+     752,   753,   754,   755,   756,   757,   758,   759,   760,   761,
+     762,   763,   764,   765,   766,   767,   768,   769,     9,   770,
+     771,   772,   773,   774,   775,   776,   777,   778,   779,   780,
+     781,   782,   783,   784,   785,   786,   787,   788,   789,   528,
+     790,   791,   792,   793,   794,   795,   796,   797,   798,   799,
+     800,   801,   802,   803,   804,   805,   806,   807,   808,   809,
+     810,   811,   812,   813,   814,   815,   816,   817,   818,   819,
+     820,   821,   822,   823,   824,   825,   826,   827,   828,   829,
+      10,   830,   831,   832,   833,   834,   835,   836,   539,   540,
+     541,   542,   837,   838,   839,   840,   841,   842,   544,   843,
+     538,    11,   539,   540,   541,   542,   543,   497,   844,   845,
+     846,   847,   544,   513,   848,   849,   558,   559,   560,   561,
+     562,   850,    12,   851,   852,   853,   854,   855,   856,   563,
+     857,    13,   858,   859,   860,   861,   862,   863,   864,   865,
+     866,   545,   546,   867,   868,   869,   870,   871,   872,   873,
+     874,   875,   876,   877,   878,    14,   879,   880,   881,    15,
+     882,   883,   884,     0,   885,    16,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,   884,   885,
-     886,   887,    77,    78,    79,   888,   889,   890,    80,    81,
+      69,    70,    71,    72,    73,    74,    75,    76,   886,   887,
+     888,   889,    77,    78,    79,   890,   891,   892,    80,    81,
       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   891,
-     892,   893,   894,   895,   896,   897,   898,   899,   121,   122,
-     123,   124,   125,   900,   126,   127,   128,   901,   902,   129,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   893,
+     894,   895,   896,   897,   898,   899,   900,   901,   121,   122,
+     123,   124,   125,   902,   126,   127,   128,   903,   904,   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,   903,   904,   905,   155,   906,
-     907,   156,   157,   158,   159,   160,   161,   162,   908,   163,
+     150,   151,   152,   153,   154,   905,   906,   907,   155,   908,
+     909,   156,   157,   158,   159,   160,   161,   162,   910,   163,
      164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   909,   910,   911,   912,   913,   914,   915,   916,   917,
-     918,   919,   920,   921,   922,   923,   924,   925,   926,   927,
-     928,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     174,   911,   912,   913,   914,   915,   916,   917,   918,   919,
+     920,   921,   922,   923,   924,   925,   926,   927,   928,   929,
+     930,   175,   176,   177,   178,   179,   180,   181,   182,   183,
      184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
      204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   929,   217,   930,   218,   219,   220,   221,
+     214,   215,   216,   931,   217,   932,   218,   219,   220,   221,
      222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   931,   932,   933,   934,   935,   936,
-     937,   938,   939,   940,   941,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   942,   943,   944,   945,   946,
-     947,   948,   246,   949,   950,   951,   952,   953,   954,   955,
-     247,   248,   956,   249,   250,   957,   251,   252,   958,   959,
-     253,   254,   255,   256,   257,   258,   259,   260,   960,   961,
-     962,   261,   963,   964,   965,   966,   967,   968,   969,   970,
-     262,   263,   264,   265,   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,     0,     0,     0,     0,
+     232,   233,   234,   235,   933,   934,   935,   936,   937,   938,
+     939,   940,   941,   942,   943,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   944,   945,   946,   947,   948,
+     949,   950,   246,   951,   952,   953,   954,   955,   956,   957,
+     247,   248,   958,   249,   250,   959,   251,   252,   960,   961,
+     253,   254,   255,   256,   257,   258,   259,   260,   962,   963,
+     964,   261,   965,   966,   967,   968,   969,   970,   971,   972,
+     262,   263,   264,   265,   973,   974,   975,   266,   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,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   570,   571,   572,   573,   574
+       0,     0,     0,     0,     0,   572,   573,   574,   575,   576
 };
 
 static const yytype_int16 yycheck[] =
@@ -2049,24 +2733,24 @@ static const yytype_int16 yycheck[] =
      287,   288,    10,   290,   291,    10,   293,   294,    10,    10,
      297,   298,   299,   300,   301,   302,   303,   304,    10,    10,
       10,   308,    10,    10,    10,    10,    10,    10,    10,    10,
-     317,   318,   319,   320,    10,    10,    10,    10,    10,    10,
+     317,   318,   319,   320,    10,    10,    10,   324,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    -1,    -1,    -1,    -1,
+      10,    10,    10,    10,    10,    10,    10,    10,    -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,    37,    37,    37,    37,    37
+      -1,    -1,    -1,    -1,    -1,    37,    37,    37,    37,    37
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_int16 yystos[] =
 {
-       0,   325,     0,    11,    12,    46,    52,    96,   114,   168,
-     230,   251,   272,   281,   305,   309,   315,   326,   327,   328,
-     331,   334,   337,   340,   349,   600,   611,   633,   637,   645,
-     658,   668,   329,   332,   335,   338,   341,   350,   601,   612,
-     634,   638,   646,   659,   669,    13,    14,    15,    16,    17,
+       0,   326,     0,    11,    12,    46,    52,    96,   114,   168,
+     230,   251,   272,   281,   305,   309,   315,   327,   328,   329,
+     332,   335,   338,   341,   350,   602,   613,   635,   639,   647,
+     660,   670,   330,   333,   336,   339,   342,   351,   603,   614,
+     636,   640,   648,   661,   671,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    49,    50,    51,
@@ -2088,7 +2772,7 @@ static const yytype_int16 yystos[] =
      245,   246,   247,   248,   249,   250,   262,   263,   264,   265,
      266,   267,   268,   269,   270,   271,   279,   287,   288,   290,
      291,   293,   294,   297,   298,   299,   300,   301,   302,   303,
-     304,   308,   317,   318,   319,   320,   330,   352,   353,   354,
+     304,   308,   317,   318,   319,   320,   324,   331,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
@@ -2110,26 +2794,26 @@ static const yytype_int16 yystos[] =
      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
-     565,   566,   567,   641,   642,   643,   644,   667,    45,    47,
-      48,   110,   143,   146,   155,   296,   333,   568,   569,   570,
-     571,   572,   573,   574,   575,    45,    53,    54,   142,   144,
-     147,   295,   336,   576,   577,   578,   579,   580,   581,   582,
-      45,    81,    82,   108,   189,   190,   232,   339,   593,   594,
-     595,   596,   597,   598,   599,    45,   280,   282,   283,   284,
-     285,   286,   292,   321,   322,   342,   583,   584,   585,   586,
-     587,   588,   589,   590,   591,   592,   310,   311,   312,   313,
-     314,   323,   343,   344,   345,   346,   347,   348,   351,   583,
-     584,   585,   586,   587,   590,    97,    98,    99,   100,   101,
-     102,   103,   104,   602,   603,   604,   605,   606,   607,   608,
-     609,   610,   169,   170,   171,   172,   173,   174,   175,   176,
-     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   613,   614,   615,   616,   617,   618,   619,   620,   621,
+     565,   566,   567,   568,   569,   643,   644,   645,   646,   669,
+      45,    47,    48,   110,   143,   146,   155,   296,   334,   570,
+     571,   572,   573,   574,   575,   576,   577,    45,    53,    54,
+     142,   144,   147,   295,   337,   578,   579,   580,   581,   582,
+     583,   584,    45,    81,    82,   108,   189,   190,   232,   340,
+     595,   596,   597,   598,   599,   600,   601,    45,   280,   282,
+     283,   284,   285,   286,   292,   321,   322,   343,   585,   586,
+     587,   588,   589,   590,   591,   592,   593,   594,   310,   311,
+     312,   313,   314,   323,   344,   345,   346,   347,   348,   349,
+     352,   585,   586,   587,   588,   589,   592,    97,    98,    99,
+     100,   101,   102,   103,   104,   604,   605,   606,   607,   608,
+     609,   610,   611,   612,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   615,   616,   617,   618,   619,   620,   621,
      622,   623,   624,   625,   626,   627,   628,   629,   630,   631,
-     632,   115,   635,   636,   316,   639,   640,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   647,   648,   649,
-     650,   651,   652,   653,   654,   655,   656,   657,   273,   274,
-     275,   276,   277,   278,   660,   661,   662,   663,   664,   665,
-     666,   306,   307,   670,   671,   672,    10,    10,    10,    10,
+     632,   633,   634,   115,   637,   638,   316,   641,   642,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   649,
+     650,   651,   652,   653,   654,   655,   656,   657,   658,   659,
+     273,   274,   275,   276,   277,   278,   662,   663,   664,   665,
+     666,   667,   668,   306,   307,   672,   673,   674,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -2162,43 +2846,43 @@ static const yytype_int16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10
+      10,    10,    10,    10,    10,    10
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_int16 yyr1[] =
 {
-       0,   324,   325,   325,   326,   326,   326,   326,   326,   326,
-     326,   326,   326,   326,   326,   326,   326,   326,   327,   328,
-     329,   329,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   331,   332,   332,   333,   333,   333,   333,
-     333,   333,   333,   333,   334,   335,   335,   336,   336,   336,
-     336,   336,   336,   336,   337,   338,   338,   339,   339,   339,
-     339,   339,   339,   339,   340,   341,   341,   342,   342,   342,
-     342,   342,   342,   342,   342,   342,   342,   343,   344,   345,
-     346,   347,   348,   349,   350,   350,   351,   351,   351,   351,
-     351,   351,   351,   351,   351,   351,   351,   351,   352,   353,
+       0,   325,   326,   326,   327,   327,   327,   327,   327,   327,
+     327,   327,   327,   327,   327,   327,   327,   327,   328,   329,
+     330,   330,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   331,   331,   332,   333,   333,   334,   334,   334,
+     334,   334,   334,   334,   334,   335,   336,   336,   337,   337,
+     337,   337,   337,   337,   337,   338,   339,   339,   340,   340,
+     340,   340,   340,   340,   340,   341,   342,   342,   343,   343,
+     343,   343,   343,   343,   343,   343,   343,   343,   344,   345,
+     346,   347,   348,   349,   350,   351,   351,   352,   352,   352,
+     352,   352,   352,   352,   352,   352,   352,   352,   352,   353,
      354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
      364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
      374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
@@ -2223,19 +2907,19 @@ static const yytype_int16 yyr1[] =
      564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
      574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
      584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-     594,   595,   596,   597,   598,   599,   600,   601,   601,   602,
-     602,   602,   602,   602,   602,   602,   602,   603,   604,   605,
-     606,   607,   608,   609,   610,   611,   612,   612,   613,   613,
-     613,   613,   613,   613,   613,   613,   613,   613,   613,   613,
-     613,   613,   613,   613,   613,   613,   613,   614,   615,   616,
+     594,   595,   596,   597,   598,   599,   600,   601,   602,   603,
+     603,   604,   604,   604,   604,   604,   604,   604,   604,   605,
+     606,   607,   608,   609,   610,   611,   612,   613,   614,   614,
+     615,   615,   615,   615,   615,   615,   615,   615,   615,   615,
+     615,   615,   615,   615,   615,   615,   615,   615,   615,   616,
      617,   618,   619,   620,   621,   622,   623,   624,   625,   626,
-     627,   628,   629,   630,   631,   632,   633,   634,   634,   635,
-     636,   637,   638,   638,   639,   640,   641,   642,   643,   644,
-     645,   646,   646,   647,   647,   647,   647,   647,   647,   647,
-     647,   647,   647,   648,   649,   650,   651,   652,   653,   654,
-     655,   656,   657,   658,   659,   659,   660,   660,   660,   660,
-     660,   660,   661,   662,   663,   664,   665,   666,   667,   668,
-     669,   669,   670,   670,   671,   672
+     627,   628,   629,   630,   631,   632,   633,   634,   635,   636,
+     636,   637,   638,   639,   640,   640,   641,   642,   643,   644,
+     645,   646,   647,   648,   648,   649,   649,   649,   649,   649,
+     649,   649,   649,   649,   649,   650,   651,   652,   653,   654,
+     655,   656,   657,   658,   659,   660,   661,   661,   662,   662,
+     662,   662,   662,   662,   663,   664,   665,   666,   667,   668,
+     669,   670,   671,   671,   672,   672,   673,   674
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -2265,13 +2949,13 @@ static const yytype_int8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
        1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
-       2,     2,     2,     1,     2,     0,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -2285,30 +2969,30 @@ static const yytype_int8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     3,     3,     4,
-       4,     4,     3,     3,     2,     2,     2,     2,     2,     2,
-       3,     3,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
+       3,     4,     4,     4,     3,     3,     2,     2,     2,     2,
+       2,     2,     3,     3,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       3,     3,     3,     2,     2,     2,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     1,
+       2,     2,     3,     3,     3,     2,     2,     2,     1,     2,
+       0,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
-       2,     1,     2,     0,     1,     2,     2,     2,     3,     3,
-       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     1,     2,     0,     1,     1,     1,     1,
-       1,     1,     2,     2,     2,     2,     2,     2,     3,     1,
-       2,     0,     1,     1,     2,     2
+       2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
+       0,     1,     2,     1,     2,     0,     1,     2,     2,     2,
+       3,     3,     1,     2,     0,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     1,     2,     0,     1,     1,
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
+       3,     1,     2,     0,     1,     1,     2,     2
 };
 
 
@@ -2387,7 +3071,7 @@ yy_symbol_value_print (FILE *yyo,
                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
   FILE *yyoutput = yyo;
-  YY_USE (yyoutput);
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -2395,7 +3079,7 @@ yy_symbol_value_print (FILE *yyo,
     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
+  YYUSE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
@@ -2509,18 +3193,18 @@ static void
 yydestruct (const char *yymsg,
             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
-  YY_USE (yyvaluep);
+  YYUSE (yyvaluep);
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
+  YYUSE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/* Lookahead token kind.  */
+/* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
@@ -2538,30 +3222,34 @@ int yynerrs;
 int
 yyparse (void)
 {
-    yy_state_fast_t yystate = 0;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus = 0;
+    int yyerrstatus;
+
+    /* The stacks and their tools:
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-    /* Refer to the stacks through separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
     /* Their size.  */
-    YYPTRDIFF_T yystacksize = YYINITDEPTH;
+    YYPTRDIFF_T yystacksize;
 
-    /* The state stack: array, bottom, top.  */
+    /* The state stack.  */
     yy_state_t yyssa[YYINITDEPTH];
-    yy_state_t *yyss = yyssa;
-    yy_state_t *yyssp = yyss;
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
-    /* The semantic value stack: array, bottom, top.  */
+    /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs = yyvsa;
-    YYSTYPE *yyvsp = yyvs;
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
 
   int yyn;
   /* The return value of yyparse.  */
   int yyresult;
-  /* Lookahead symbol kind.  */
+  /* Lookahead token as an internal (translated) token number.  */
   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
@@ -2575,6 +3263,15 @@ yyparse (void)
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
+  yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
+
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yychar = YYEMPTY; /* Cause a token to be read.  */
@@ -2775,24 +3472,24 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-  case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL  */
+  case 18:
 #line 204 "./util/configparser.y"
         {
                OUTYY(("\nP(force-toplevel)\n"));
        }
-#line 2784 "util/configparser.c"
+#line 3481 "util/configparser.c"
     break;
 
-  case 19: /* serverstart: VAR_SERVER  */
+  case 19:
 #line 210 "./util/configparser.y"
         {
                OUTYY(("\nP(server:)\n"));
        }
-#line 2792 "util/configparser.c"
+#line 3489 "util/configparser.c"
     break;
 
-  case 243: /* stubstart: VAR_STUB_ZONE  */
-#line 318 "./util/configparser.y"
+  case 244:
+#line 319 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n"));
@@ -2804,11 +3501,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2808 "util/configparser.c"
+#line 3505 "util/configparser.c"
     break;
 
-  case 254: /* forwardstart: VAR_FORWARD_ZONE  */
-#line 336 "./util/configparser.y"
+  case 255:
+#line 337 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n"));
@@ -2820,11 +3517,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2824 "util/configparser.c"
+#line 3521 "util/configparser.c"
     break;
 
-  case 264: /* viewstart: VAR_VIEW  */
-#line 354 "./util/configparser.y"
+  case 265:
+#line 355 "./util/configparser.y"
         {
                struct config_view* s;
                OUTYY(("\nP(view:)\n"));
@@ -2838,11 +3535,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2842 "util/configparser.c"
+#line 3539 "util/configparser.c"
     break;
 
-  case 274: /* authstart: VAR_AUTH_ZONE  */
-#line 374 "./util/configparser.y"
+  case 275:
+#line 375 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(auth_zone:)\n"));
@@ -2861,11 +3558,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2865 "util/configparser.c"
+#line 3562 "util/configparser.c"
     break;
 
-  case 287: /* rpz_tag: VAR_TAGS STRING_ARG  */
-#line 401 "./util/configparser.y"
+  case 288:
+#line 402 "./util/configparser.y"
         {
                uint8_t* bitlist;
                size_t len = 0;
@@ -2882,11 +3579,11 @@ yyreduce:
 
                }
        }
-#line 2886 "util/configparser.c"
+#line 3583 "util/configparser.c"
     break;
 
-  case 288: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG  */
-#line 420 "./util/configparser.y"
+  case 289:
+#line 421 "./util/configparser.y"
         {
                OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
@@ -2901,21 +3598,21 @@ yyreduce:
                        cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
                }
        }
-#line 2905 "util/configparser.c"
+#line 3602 "util/configparser.c"
     break;
 
-  case 289: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG  */
-#line 437 "./util/configparser.y"
+  case 290:
+#line 438 "./util/configparser.y"
         {
                OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_cname);
                cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
        }
-#line 2915 "util/configparser.c"
+#line 3612 "util/configparser.c"
     break;
 
-  case 290: /* rpz_log: VAR_RPZ_LOG STRING_ARG  */
-#line 445 "./util/configparser.y"
+  case 291:
+#line 446 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2923,21 +3620,21 @@ yyreduce:
                else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2927 "util/configparser.c"
+#line 3624 "util/configparser.c"
     break;
 
-  case 291: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG  */
-#line 455 "./util/configparser.y"
+  case 292:
+#line 456 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_log_name);
                cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
        }
-#line 2937 "util/configparser.c"
+#line 3634 "util/configparser.c"
     break;
 
-  case 292: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG  */
-#line 462 "./util/configparser.y"
+  case 293:
+#line 463 "./util/configparser.y"
         {
                OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2945,11 +3642,11 @@ yyreduce:
                else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2949 "util/configparser.c"
+#line 3646 "util/configparser.c"
     break;
 
-  case 293: /* rpzstart: VAR_RPZ  */
-#line 472 "./util/configparser.y"
+  case 294:
+#line 473 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(rpz:)\n")); 
@@ -2966,11 +3663,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 2970 "util/configparser.c"
+#line 3667 "util/configparser.c"
     break;
 
-  case 308: /* server_num_threads: VAR_NUM_THREADS STRING_ARG  */
-#line 496 "./util/configparser.y"
+  case 309:
+#line 497 "./util/configparser.y"
         {
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2978,11 +3675,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2982 "util/configparser.c"
+#line 3679 "util/configparser.c"
     break;
 
-  case 309: /* server_verbosity: VAR_VERBOSITY STRING_ARG  */
-#line 505 "./util/configparser.y"
+  case 310:
+#line 506 "./util/configparser.y"
         {
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2990,11 +3687,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2994 "util/configparser.c"
+#line 3691 "util/configparser.c"
     break;
 
-  case 310: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG  */
-#line 514 "./util/configparser.y"
+  case 311:
+#line 515 "./util/configparser.y"
         {
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -3004,11 +3701,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3008 "util/configparser.c"
+#line 3705 "util/configparser.c"
     break;
 
-  case 311: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG  */
-#line 525 "./util/configparser.y"
+  case 312:
+#line 526 "./util/configparser.y"
         {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3016,11 +3713,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3020 "util/configparser.c"
+#line 3717 "util/configparser.c"
     break;
 
-  case 312: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG  */
-#line 534 "./util/configparser.y"
+  case 313:
+#line 535 "./util/configparser.y"
         {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3028,11 +3725,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3032 "util/configparser.c"
+#line 3729 "util/configparser.c"
     break;
 
-  case 313: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG  */
-#line 543 "./util/configparser.y"
+  case 314:
+#line 544 "./util/configparser.y"
         {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3040,11 +3737,11 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3044 "util/configparser.c"
+#line 3741 "util/configparser.c"
     break;
 
-  case 314: /* server_shm_key: VAR_SHM_KEY STRING_ARG  */
-#line 552 "./util/configparser.y"
+  case 315:
+#line 553 "./util/configparser.y"
         {
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -3054,11 +3751,11 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3058 "util/configparser.c"
+#line 3755 "util/configparser.c"
     break;
 
-  case 315: /* server_port: VAR_PORT STRING_ARG  */
-#line 563 "./util/configparser.y"
+  case 316:
+#line 564 "./util/configparser.y"
         {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3066,11 +3763,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3070 "util/configparser.c"
+#line 3767 "util/configparser.c"
     break;
 
-  case 316: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG  */
-#line 572 "./util/configparser.y"
+  case 317:
+#line 573 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
@@ -3081,11 +3778,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3085 "util/configparser.c"
+#line 3782 "util/configparser.c"
     break;
 
-  case 317: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG  */
-#line 584 "./util/configparser.y"
+  case 318:
+#line 585 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
@@ -3097,11 +3794,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3101 "util/configparser.c"
+#line 3798 "util/configparser.c"
     break;
 
-  case 318: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG  */
-#line 598 "./util/configparser.y"
+  case 319:
+#line 599 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
@@ -3115,11 +3812,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3119 "util/configparser.c"
+#line 3816 "util/configparser.c"
     break;
 
-  case 319: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG  */
-#line 613 "./util/configparser.y"
+  case 320:
+#line 614 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
@@ -3129,11 +3826,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3133 "util/configparser.c"
+#line 3830 "util/configparser.c"
     break;
 
-  case 320: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG  */
-#line 624 "./util/configparser.y"
+  case 321:
+#line 625 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3149,11 +3846,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3153 "util/configparser.c"
+#line 3850 "util/configparser.c"
     break;
 
-  case 321: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG  */
-#line 641 "./util/configparser.y"
+  case 322:
+#line 642 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3169,11 +3866,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3173 "util/configparser.c"
+#line 3870 "util/configparser.c"
     break;
 
-  case 322: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG  */
-#line 658 "./util/configparser.y"
+  case 323:
+#line 659 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3189,11 +3886,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3193 "util/configparser.c"
+#line 3890 "util/configparser.c"
     break;
 
-  case 323: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG  */
-#line 675 "./util/configparser.y"
+  case 324:
+#line 676 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3209,11 +3906,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3213 "util/configparser.c"
+#line 3910 "util/configparser.c"
     break;
 
-  case 324: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG  */
-#line 692 "./util/configparser.y"
+  case 325:
+#line 693 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3227,11 +3924,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3231 "util/configparser.c"
+#line 3928 "util/configparser.c"
     break;
 
-  case 325: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG  */
-#line 707 "./util/configparser.y"
+  case 326:
+#line 708 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3245,11 +3942,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3249 "util/configparser.c"
+#line 3946 "util/configparser.c"
     break;
 
-  case 326: /* server_interface: VAR_INTERFACE STRING_ARG  */
-#line 722 "./util/configparser.y"
+  case 327:
+#line 723 "./util/configparser.y"
         {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -3261,11 +3958,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 3265 "util/configparser.c"
+#line 3962 "util/configparser.c"
     break;
 
-  case 327: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG  */
-#line 735 "./util/configparser.y"
+  case 328:
+#line 736 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -3279,11 +3976,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 3283 "util/configparser.c"
+#line 3980 "util/configparser.c"
     break;
 
-  case 328: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG  */
-#line 750 "./util/configparser.y"
+  case 329:
+#line 751 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3291,11 +3988,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3295 "util/configparser.c"
+#line 3992 "util/configparser.c"
     break;
 
-  case 329: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG  */
-#line 759 "./util/configparser.y"
+  case 330:
+#line 760 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1,
@@ -3303,11 +4000,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3307 "util/configparser.c"
+#line 4004 "util/configparser.c"
     break;
 
-  case 330: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG  */
-#line 768 "./util/configparser.y"
+  case 331:
+#line 769 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0,
@@ -3315,11 +4012,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3319 "util/configparser.c"
+#line 4016 "util/configparser.c"
     break;
 
-  case 331: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG  */
-#line 777 "./util/configparser.y"
+  case 332:
+#line 778 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3327,11 +4024,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3331 "util/configparser.c"
+#line 4028 "util/configparser.c"
     break;
 
-  case 332: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG  */
-#line 786 "./util/configparser.y"
+  case 333:
+#line 787 "./util/configparser.y"
         {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3339,11 +4036,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3343 "util/configparser.c"
+#line 4040 "util/configparser.c"
     break;
 
-  case 333: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG  */
-#line 795 "./util/configparser.y"
+  case 334:
+#line 796 "./util/configparser.y"
         {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3351,11 +4048,21 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3355 "util/configparser.c"
+#line 4052 "util/configparser.c"
+    break;
+
+  case 335:
+#line 805 "./util/configparser.y"
+        {
+               OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str)));
+               free(cfg_parser->cfg->if_automatic_ports);
+               cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str);
+       }
+#line 4062 "util/configparser.c"
     break;
 
-  case 334: /* server_do_ip4: VAR_DO_IP4 STRING_ARG  */
-#line 804 "./util/configparser.y"
+  case 336:
+#line 812 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3363,11 +4070,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3367 "util/configparser.c"
+#line 4074 "util/configparser.c"
     break;
 
-  case 335: /* server_do_ip6: VAR_DO_IP6 STRING_ARG  */
-#line 813 "./util/configparser.y"
+  case 337:
+#line 821 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3375,11 +4082,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3379 "util/configparser.c"
+#line 4086 "util/configparser.c"
     break;
 
-  case 336: /* server_do_udp: VAR_DO_UDP STRING_ARG  */
-#line 822 "./util/configparser.y"
+  case 338:
+#line 830 "./util/configparser.y"
         {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3387,11 +4094,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3391 "util/configparser.c"
+#line 4098 "util/configparser.c"
     break;
 
-  case 337: /* server_do_tcp: VAR_DO_TCP STRING_ARG  */
-#line 831 "./util/configparser.y"
+  case 339:
+#line 839 "./util/configparser.y"
         {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3399,11 +4106,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3403 "util/configparser.c"
+#line 4110 "util/configparser.c"
     break;
 
-  case 338: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG  */
-#line 840 "./util/configparser.y"
+  case 340:
+#line 848 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3411,11 +4118,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3415 "util/configparser.c"
+#line 4122 "util/configparser.c"
     break;
 
-  case 339: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG  */
-#line 849 "./util/configparser.y"
+  case 341:
+#line 857 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3423,11 +4130,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3427 "util/configparser.c"
+#line 4134 "util/configparser.c"
     break;
 
-  case 340: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG  */
-#line 858 "./util/configparser.y"
+  case 342:
+#line 866 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3435,11 +4142,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3439 "util/configparser.c"
+#line 4146 "util/configparser.c"
     break;
 
-  case 341: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG  */
-#line 867 "./util/configparser.y"
+  case 343:
+#line 875 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3447,11 +4154,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3451 "util/configparser.c"
+#line 4158 "util/configparser.c"
     break;
 
-  case 342: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG  */
-#line 876 "./util/configparser.y"
+  case 344:
+#line 884 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3463,11 +4170,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3467 "util/configparser.c"
+#line 4174 "util/configparser.c"
     break;
 
-  case 343: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG  */
-#line 889 "./util/configparser.y"
+  case 345:
+#line 897 "./util/configparser.y"
         {
                OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3477,11 +4184,11 @@ yyreduce:
                else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3481 "util/configparser.c"
+#line 4188 "util/configparser.c"
     break;
 
-  case 344: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG  */
-#line 900 "./util/configparser.y"
+  case 346:
+#line 908 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3491,11 +4198,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3495 "util/configparser.c"
+#line 4202 "util/configparser.c"
     break;
 
-  case 345: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG  */
-#line 911 "./util/configparser.y"
+  case 347:
+#line 919 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3505,11 +4212,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3509 "util/configparser.c"
+#line 4216 "util/configparser.c"
     break;
 
-  case 346: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG  */
-#line 922 "./util/configparser.y"
+  case 348:
+#line 930 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3517,11 +4224,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3521 "util/configparser.c"
+#line 4228 "util/configparser.c"
     break;
 
-  case 347: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG  */
-#line 931 "./util/configparser.y"
+  case 349:
+#line 939 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3533,11 +4240,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3537 "util/configparser.c"
+#line 4244 "util/configparser.c"
     break;
 
-  case 348: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG  */
-#line 944 "./util/configparser.y"
+  case 350:
+#line 952 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3545,11 +4252,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3549 "util/configparser.c"
+#line 4256 "util/configparser.c"
     break;
 
-  case 349: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG  */
-#line 953 "./util/configparser.y"
+  case 351:
+#line 961 "./util/configparser.y"
         {
                OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3557,11 +4264,11 @@ yyreduce:
                else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3561 "util/configparser.c"
+#line 4268 "util/configparser.c"
     break;
 
-  case 350: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG  */
-#line 962 "./util/configparser.y"
+  case 352:
+#line 970 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3569,31 +4276,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3573 "util/configparser.c"
+#line 4280 "util/configparser.c"
     break;
 
-  case 351: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG  */
-#line 971 "./util/configparser.y"
+  case 353:
+#line 979 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 3583 "util/configparser.c"
+#line 4290 "util/configparser.c"
     break;
 
-  case 352: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG  */
-#line 978 "./util/configparser.y"
+  case 354:
+#line 986 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 3593 "util/configparser.c"
+#line 4300 "util/configparser.c"
     break;
 
-  case 353: /* server_ssl_port: VAR_SSL_PORT STRING_ARG  */
-#line 985 "./util/configparser.y"
+  case 355:
+#line 993 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3601,21 +4308,21 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3605 "util/configparser.c"
+#line 4312 "util/configparser.c"
     break;
 
-  case 354: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG  */
-#line 994 "./util/configparser.y"
+  case 356:
+#line 1002 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_cert_bundle);
                cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
        }
-#line 3615 "util/configparser.c"
+#line 4322 "util/configparser.c"
     break;
 
-  case 355: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG  */
-#line 1001 "./util/configparser.y"
+  case 357:
+#line 1009 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3623,53 +4330,53 @@ yyreduce:
                else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3627 "util/configparser.c"
+#line 4334 "util/configparser.c"
     break;
 
-  case 356: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG  */
-#line 1010 "./util/configparser.y"
+  case 358:
+#line 1018 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3638 "util/configparser.c"
+#line 4345 "util/configparser.c"
     break;
 
-  case 357: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG  */
-#line 1018 "./util/configparser.y"
+  case 359:
+#line 1026 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphers);
                cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
        }
-#line 3648 "util/configparser.c"
+#line 4355 "util/configparser.c"
     break;
 
-  case 358: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG  */
-#line 1025 "./util/configparser.y"
+  case 360:
+#line 1033 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphersuites);
                cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
        }
-#line 3658 "util/configparser.c"
+#line 4365 "util/configparser.c"
     break;
 
-  case 359: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG  */
-#line 1032 "./util/configparser.y"
+  case 361:
+#line 1040 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3669 "util/configparser.c"
+#line 4376 "util/configparser.c"
     break;
 
-  case 360: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG  */
-#line 1040 "./util/configparser.y"
+  case 362:
+#line 1048 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3677,11 +4384,11 @@ yyreduce:
                else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3681 "util/configparser.c"
+#line 4388 "util/configparser.c"
     break;
 
-  case 361: /* server_https_port: VAR_HTTPS_PORT STRING_ARG  */
-#line 1049 "./util/configparser.y"
+  case 363:
+#line 1057 "./util/configparser.y"
         {
                OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3689,11 +4396,11 @@ yyreduce:
                else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3693 "util/configparser.c"
+#line 4400 "util/configparser.c"
     break;
 
-  case 362: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG  */
-#line 1057 "./util/configparser.y"
+  case 364:
+#line 1065 "./util/configparser.y"
         {
                OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->http_endpoint);
@@ -3709,11 +4416,11 @@ yyreduce:
                        cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
                }
        }
-#line 3713 "util/configparser.c"
+#line 4420 "util/configparser.c"
     break;
 
-  case 363: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG  */
-#line 1073 "./util/configparser.y"
+  case 365:
+#line 1081 "./util/configparser.y"
         {
                OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3721,11 +4428,11 @@ yyreduce:
                else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3725 "util/configparser.c"
+#line 4432 "util/configparser.c"
     break;
 
-  case 364: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG  */
-#line 1081 "./util/configparser.y"
+  case 366:
+#line 1089 "./util/configparser.y"
         {
                OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -3733,11 +4440,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3737 "util/configparser.c"
+#line 4444 "util/configparser.c"
     break;
 
-  case 365: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG  */
-#line 1089 "./util/configparser.y"
+  case 367:
+#line 1097 "./util/configparser.y"
         {
                OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -3745,11 +4452,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3749 "util/configparser.c"
+#line 4456 "util/configparser.c"
     break;
 
-  case 366: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG  */
-#line 1097 "./util/configparser.y"
+  case 368:
+#line 1105 "./util/configparser.y"
         {
                OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3757,11 +4464,11 @@ yyreduce:
                else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3761 "util/configparser.c"
+#line 4468 "util/configparser.c"
     break;
 
-  case 367: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG  */
-#line 1105 "./util/configparser.y"
+  case 369:
+#line 1113 "./util/configparser.y"
         {
                OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3769,11 +4476,11 @@ yyreduce:
                else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3773 "util/configparser.c"
+#line 4480 "util/configparser.c"
     break;
 
-  case 368: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG  */
-#line 1113 "./util/configparser.y"
+  case 370:
+#line 1121 "./util/configparser.y"
         {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3781,11 +4488,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3785 "util/configparser.c"
+#line 4492 "util/configparser.c"
     break;
 
-  case 369: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG  */
-#line 1122 "./util/configparser.y"
+  case 371:
+#line 1130 "./util/configparser.y"
         {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3793,11 +4500,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3797 "util/configparser.c"
+#line 4504 "util/configparser.c"
     break;
 
-  case 370: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG  */
-#line 1131 "./util/configparser.y"
+  case 372:
+#line 1139 "./util/configparser.y"
         {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3810,11 +4517,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3814 "util/configparser.c"
+#line 4521 "util/configparser.c"
     break;
 
-  case 371: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG  */
-#line 1145 "./util/configparser.y"
+  case 373:
+#line 1153 "./util/configparser.y"
         {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3822,11 +4529,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3826 "util/configparser.c"
+#line 4533 "util/configparser.c"
     break;
 
-  case 372: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG  */
-#line 1154 "./util/configparser.y"
+  case 374:
+#line 1162 "./util/configparser.y"
         {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3834,11 +4541,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3838 "util/configparser.c"
+#line 4545 "util/configparser.c"
     break;
 
-  case 373: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG  */
-#line 1163 "./util/configparser.y"
+  case 375:
+#line 1171 "./util/configparser.y"
         {
                OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3846,11 +4553,11 @@ yyreduce:
                else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3850 "util/configparser.c"
+#line 4557 "util/configparser.c"
     break;
 
-  case 374: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG  */
-#line 1172 "./util/configparser.y"
+  case 376:
+#line 1180 "./util/configparser.y"
         {
                OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3858,11 +4565,11 @@ yyreduce:
                else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3862 "util/configparser.c"
+#line 4569 "util/configparser.c"
     break;
 
-  case 375: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG  */
-#line 1181 "./util/configparser.y"
+  case 377:
+#line 1189 "./util/configparser.y"
         {
                OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3870,11 +4577,11 @@ yyreduce:
                else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3874 "util/configparser.c"
+#line 4581 "util/configparser.c"
     break;
 
-  case 376: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG  */
-#line 1190 "./util/configparser.y"
+  case 378:
+#line 1198 "./util/configparser.y"
         {
                OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3882,31 +4589,31 @@ yyreduce:
                else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3886 "util/configparser.c"
+#line 4593 "util/configparser.c"
     break;
 
-  case 377: /* server_chroot: VAR_CHROOT STRING_ARG  */
-#line 1199 "./util/configparser.y"
+  case 379:
+#line 1207 "./util/configparser.y"
         {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 3896 "util/configparser.c"
+#line 4603 "util/configparser.c"
     break;
 
-  case 378: /* server_username: VAR_USERNAME STRING_ARG  */
-#line 1206 "./util/configparser.y"
+  case 380:
+#line 1214 "./util/configparser.y"
         {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 3906 "util/configparser.c"
+#line 4613 "util/configparser.c"
     break;
 
-  case 379: /* server_directory: VAR_DIRECTORY STRING_ARG  */
-#line 1213 "./util/configparser.y"
+  case 381:
+#line 1221 "./util/configparser.y"
         {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -3931,105 +4638,105 @@ yyreduce:
                        }
                }
        }
-#line 3935 "util/configparser.c"
+#line 4642 "util/configparser.c"
     break;
 
-  case 380: /* server_logfile: VAR_LOGFILE STRING_ARG  */
-#line 1239 "./util/configparser.y"
+  case 382:
+#line 1247 "./util/configparser.y"
         {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 3946 "util/configparser.c"
+#line 4653 "util/configparser.c"
     break;
 
-  case 381: /* server_pidfile: VAR_PIDFILE STRING_ARG  */
-#line 1247 "./util/configparser.y"
+  case 383:
+#line 1255 "./util/configparser.y"
         {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 3956 "util/configparser.c"
+#line 4663 "util/configparser.c"
     break;
 
-  case 382: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG  */
-#line 1254 "./util/configparser.y"
+  case 384:
+#line 1262 "./util/configparser.y"
         {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3966 "util/configparser.c"
+#line 4673 "util/configparser.c"
     break;
 
-  case 383: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG  */
-#line 1261 "./util/configparser.y"
+  case 385:
+#line 1269 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 3976 "util/configparser.c"
+#line 4683 "util/configparser.c"
     break;
 
-  case 384: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG  */
-#line 1268 "./util/configparser.y"
+  case 386:
+#line 1276 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 3986 "util/configparser.c"
+#line 4693 "util/configparser.c"
     break;
 
-  case 385: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG  */
-#line 1275 "./util/configparser.y"
+  case 387:
+#line 1283 "./util/configparser.y"
         {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3997 "util/configparser.c"
+#line 4704 "util/configparser.c"
     break;
 
-  case 386: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG  */
-#line 1283 "./util/configparser.y"
+  case 388:
+#line 1291 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4008 "util/configparser.c"
+#line 4715 "util/configparser.c"
     break;
 
-  case 387: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG  */
-#line 1291 "./util/configparser.y"
+  case 389:
+#line 1299 "./util/configparser.y"
         {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4019 "util/configparser.c"
+#line 4726 "util/configparser.c"
     break;
 
-  case 388: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG  */
-#line 1299 "./util/configparser.y"
+  case 390:
+#line 1307 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4029 "util/configparser.c"
+#line 4736 "util/configparser.c"
     break;
 
-  case 389: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG  */
-#line 1306 "./util/configparser.y"
+  case 391:
+#line 1314 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4039,11 +4746,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4043 "util/configparser.c"
+#line 4750 "util/configparser.c"
     break;
 
-  case 390: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG  */
-#line 1317 "./util/configparser.y"
+  case 392:
+#line 1325 "./util/configparser.y"
         {
                OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4053,21 +4760,21 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4057 "util/configparser.c"
+#line 4764 "util/configparser.c"
     break;
 
-  case 391: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG  */
-#line 1328 "./util/configparser.y"
+  case 393:
+#line 1336 "./util/configparser.y"
         {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4067 "util/configparser.c"
+#line 4774 "util/configparser.c"
     break;
 
-  case 392: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG  */
-#line 1335 "./util/configparser.y"
+  case 394:
+#line 1343 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4075,11 +4782,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4079 "util/configparser.c"
+#line 4786 "util/configparser.c"
     break;
 
-  case 393: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG  */
-#line 1344 "./util/configparser.y"
+  case 395:
+#line 1352 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4087,11 +4794,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4091 "util/configparser.c"
+#line 4798 "util/configparser.c"
     break;
 
-  case 394: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG  */
-#line 1353 "./util/configparser.y"
+  case 396:
+#line 1361 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4099,11 +4806,11 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4103 "util/configparser.c"
+#line 4810 "util/configparser.c"
     break;
 
-  case 395: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG  */
-#line 1362 "./util/configparser.y"
+  case 397:
+#line 1370 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4111,41 +4818,41 @@ yyreduce:
                else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4115 "util/configparser.c"
+#line 4822 "util/configparser.c"
     break;
 
-  case 396: /* server_identity: VAR_IDENTITY STRING_ARG  */
-#line 1371 "./util/configparser.y"
+  case 398:
+#line 1379 "./util/configparser.y"
         {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 4125 "util/configparser.c"
+#line 4832 "util/configparser.c"
     break;
 
-  case 397: /* server_version: VAR_VERSION STRING_ARG  */
-#line 1378 "./util/configparser.y"
+  case 399:
+#line 1386 "./util/configparser.y"
         {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 4135 "util/configparser.c"
+#line 4842 "util/configparser.c"
     break;
 
-  case 398: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG  */
-#line 1385 "./util/configparser.y"
+  case 400:
+#line 1393 "./util/configparser.y"
         {
                OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->http_user_agent);
                cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
        }
-#line 4145 "util/configparser.c"
+#line 4852 "util/configparser.c"
     break;
 
-  case 399: /* server_nsid: VAR_NSID STRING_ARG  */
-#line 1392 "./util/configparser.y"
+  case 401:
+#line 1400 "./util/configparser.y"
         {
                OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->nsid_cfg_str);
@@ -4160,33 +4867,33 @@ yyreduce:
                        yyerror("the NSID must be either a hex string or an "
                            "ascii character string prepended with ascii_.");
        }
-#line 4164 "util/configparser.c"
+#line 4871 "util/configparser.c"
     break;
 
-  case 400: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG  */
-#line 1408 "./util/configparser.y"
+  case 402:
+#line 1416 "./util/configparser.y"
         {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 4175 "util/configparser.c"
+#line 4882 "util/configparser.c"
     break;
 
-  case 401: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG  */
-#line 1416 "./util/configparser.y"
+  case 403:
+#line 1424 "./util/configparser.y"
         {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 4186 "util/configparser.c"
+#line 4893 "util/configparser.c"
     break;
 
-  case 402: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG  */
-#line 1424 "./util/configparser.y"
+  case 404:
+#line 1432 "./util/configparser.y"
         {
                OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4195,11 +4902,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4199 "util/configparser.c"
+#line 4906 "util/configparser.c"
     break;
 
-  case 403: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG  */
-#line 1434 "./util/configparser.y"
+  case 405:
+#line 1442 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4208,11 +4915,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4212 "util/configparser.c"
+#line 4919 "util/configparser.c"
     break;
 
-  case 404: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG  */
-#line 1444 "./util/configparser.y"
+  case 406:
+#line 1452 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4221,11 +4928,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4225 "util/configparser.c"
+#line 4932 "util/configparser.c"
     break;
 
-  case 405: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG  */
-#line 1454 "./util/configparser.y"
+  case 407:
+#line 1462 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4238,22 +4945,22 @@ yyreduce:
                        cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4242 "util/configparser.c"
+#line 4949 "util/configparser.c"
     break;
 
-  case 406: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG  */
-#line 1468 "./util/configparser.y"
+  case 408:
+#line 1476 "./util/configparser.y"
         {
                OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4253 "util/configparser.c"
+#line 4960 "util/configparser.c"
     break;
 
-  case 407: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG  */
-#line 1476 "./util/configparser.y"
+  case 409:
+#line 1484 "./util/configparser.y"
         {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4265,11 +4972,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4269 "util/configparser.c"
+#line 4976 "util/configparser.c"
     break;
 
-  case 408: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG  */
-#line 1489 "./util/configparser.y"
+  case 410:
+#line 1497 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4279,22 +4986,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4283 "util/configparser.c"
+#line 4990 "util/configparser.c"
     break;
 
-  case 409: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG  */
-#line 1500 "./util/configparser.y"
+  case 411:
+#line 1508 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4294 "util/configparser.c"
+#line 5001 "util/configparser.c"
     break;
 
-  case 410: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG  */
-#line 1508 "./util/configparser.y"
+  case 412:
+#line 1516 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -4306,11 +5013,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4310 "util/configparser.c"
+#line 5017 "util/configparser.c"
     break;
 
-  case 411: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG  */
-#line 1521 "./util/configparser.y"
+  case 413:
+#line 1529 "./util/configparser.y"
         {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4318,11 +5025,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4322 "util/configparser.c"
+#line 5029 "util/configparser.c"
     break;
 
-  case 412: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG  */
-#line 1530 "./util/configparser.y"
+  case 414:
+#line 1538 "./util/configparser.y"
         {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4330,11 +5037,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4334 "util/configparser.c"
+#line 5041 "util/configparser.c"
     break;
 
-  case 413: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG  */
-#line 1539 "./util/configparser.y"
+  case 415:
+#line 1547 "./util/configparser.y"
         {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4342,11 +5049,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4346 "util/configparser.c"
+#line 5053 "util/configparser.c"
     break;
 
-  case 414: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG  */
-#line 1548 "./util/configparser.y"
+  case 416:
+#line 1556 "./util/configparser.y"
         {
                OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4354,11 +5061,11 @@ yyreduce:
                else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4358 "util/configparser.c"
+#line 5065 "util/configparser.c"
     break;
 
-  case 415: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG  */
-#line 1557 "./util/configparser.y"
+  case 417:
+#line 1565 "./util/configparser.y"
         {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4367,11 +5074,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4371 "util/configparser.c"
+#line 5078 "util/configparser.c"
     break;
 
-  case 416: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG  */
-#line 1567 "./util/configparser.y"
+  case 418:
+#line 1575 "./util/configparser.y"
         {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4380,22 +5087,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4384 "util/configparser.c"
+#line 5091 "util/configparser.c"
     break;
 
-  case 417: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG  */
-#line 1577 "./util/configparser.y"
+  case 419:
+#line 1585 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4395 "util/configparser.c"
+#line 5102 "util/configparser.c"
     break;
 
-  case 418: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG  */
-#line 1585 "./util/configparser.y"
+  case 420:
+#line 1593 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -4407,11 +5114,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4411 "util/configparser.c"
+#line 5118 "util/configparser.c"
     break;
 
-  case 419: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG  */
-#line 1598 "./util/configparser.y"
+  case 421:
+#line 1606 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4419,22 +5126,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4423 "util/configparser.c"
+#line 5130 "util/configparser.c"
     break;
 
-  case 420: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG  */
-#line 1607 "./util/configparser.y"
+  case 422:
+#line 1615 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4434 "util/configparser.c"
+#line 5141 "util/configparser.c"
     break;
 
-  case 421: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG  */
-#line 1615 "./util/configparser.y"
+  case 423:
+#line 1623 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4442,22 +5149,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4446 "util/configparser.c"
+#line 5153 "util/configparser.c"
     break;
 
-  case 422: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG  */
-#line 1624 "./util/configparser.y"
+  case 424:
+#line 1632 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4457 "util/configparser.c"
+#line 5164 "util/configparser.c"
     break;
 
-  case 423: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG  */
-#line 1632 "./util/configparser.y"
+  case 425:
+#line 1640 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -4469,11 +5176,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4473 "util/configparser.c"
+#line 5180 "util/configparser.c"
     break;
 
-  case 424: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG  */
-#line 1645 "./util/configparser.y"
+  case 426:
+#line 1653 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4481,11 +5188,11 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4485 "util/configparser.c"
+#line 5192 "util/configparser.c"
     break;
 
-  case 425: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG  */
-#line 1654 "./util/configparser.y"
+  case 427:
+#line 1662 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4494,21 +5201,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4498 "util/configparser.c"
+#line 5205 "util/configparser.c"
     break;
 
-  case 426: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG  */
-#line 1664 "./util/configparser.y"
+  case 428:
+#line 1672 "./util/configparser.y"
         {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 4508 "util/configparser.c"
+#line 5215 "util/configparser.c"
     break;
 
-  case 427: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG  */
-#line 1671 "./util/configparser.y"
+  case 429:
+#line 1679 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4517,11 +5224,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4521 "util/configparser.c"
+#line 5228 "util/configparser.c"
     break;
 
-  case 428: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG  */
-#line 1681 "./util/configparser.y"
+  case 430:
+#line 1689 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4530,11 +5237,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4534 "util/configparser.c"
+#line 5241 "util/configparser.c"
     break;
 
-  case 429: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG  */
-#line 1691 "./util/configparser.y"
+  case 431:
+#line 1699 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4543,11 +5250,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4547 "util/configparser.c"
+#line 5254 "util/configparser.c"
     break;
 
-  case 430: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG  */
-#line 1701 "./util/configparser.y"
+  case 432:
+#line 1709 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4556,11 +5263,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4560 "util/configparser.c"
+#line 5267 "util/configparser.c"
     break;
 
-  case 431: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG  */
-#line 1711 "./util/configparser.y"
+  case 433:
+#line 1719 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4569,11 +5276,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4573 "util/configparser.c"
+#line 5280 "util/configparser.c"
     break;
 
-  case 432: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG  */
-#line 1721 "./util/configparser.y"
+  case 434:
+#line 1729 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4582,11 +5289,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4586 "util/configparser.c"
+#line 5293 "util/configparser.c"
     break;
 
-  case 433: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG  */
-#line 1731 "./util/configparser.y"
+  case 435:
+#line 1739 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4595,11 +5302,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4599 "util/configparser.c"
+#line 5306 "util/configparser.c"
     break;
 
-  case 434: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG  */
-#line 1741 "./util/configparser.y"
+  case 436:
+#line 1749 "./util/configparser.y"
         {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4608,41 +5315,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4612 "util/configparser.c"
+#line 5319 "util/configparser.c"
     break;
 
-  case 435: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG  */
-#line 1751 "./util/configparser.y"
+  case 437:
+#line 1759 "./util/configparser.y"
         {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4622 "util/configparser.c"
+#line 5329 "util/configparser.c"
     break;
 
-  case 436: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG  */
-#line 1758 "./util/configparser.y"
+  case 438:
+#line 1766 "./util/configparser.y"
         {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4632 "util/configparser.c"
+#line 5339 "util/configparser.c"
     break;
 
-  case 437: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG  */
-#line 1765 "./util/configparser.y"
+  case 439:
+#line 1773 "./util/configparser.y"
         {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4642 "util/configparser.c"
+#line 5349 "util/configparser.c"
     break;
 
-  case 438: /* server_prefetch: VAR_PREFETCH STRING_ARG  */
-#line 1772 "./util/configparser.y"
+  case 440:
+#line 1780 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4650,11 +5357,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4654 "util/configparser.c"
+#line 5361 "util/configparser.c"
     break;
 
-  case 439: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG  */
-#line 1781 "./util/configparser.y"
+  case 441:
+#line 1789 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4662,11 +5369,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4666 "util/configparser.c"
+#line 5373 "util/configparser.c"
     break;
 
-  case 440: /* server_deny_any: VAR_DENY_ANY STRING_ARG  */
-#line 1790 "./util/configparser.y"
+  case 442:
+#line 1798 "./util/configparser.y"
         {
                OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4674,11 +5381,11 @@ yyreduce:
                else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4678 "util/configparser.c"
+#line 5385 "util/configparser.c"
     break;
 
-  case 441: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG  */
-#line 1799 "./util/configparser.y"
+  case 443:
+#line 1807 "./util/configparser.y"
         {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4686,21 +5393,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4690 "util/configparser.c"
+#line 5397 "util/configparser.c"
     break;
 
-  case 442: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG  */
-#line 1808 "./util/configparser.y"
+  case 444:
+#line 1816 "./util/configparser.y"
         {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4700 "util/configparser.c"
+#line 5407 "util/configparser.c"
     break;
 
-  case 443: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG  */
-#line 1815 "./util/configparser.y"
+  case 445:
+#line 1823 "./util/configparser.y"
         {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4709,11 +5416,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4713 "util/configparser.c"
+#line 5420 "util/configparser.c"
     break;
 
-  case 444: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG  */
-#line 1825 "./util/configparser.y"
+  case 446:
+#line 1833 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -4732,21 +5439,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 4736 "util/configparser.c"
+#line 5443 "util/configparser.c"
     break;
 
-  case 445: /* server_module_conf: VAR_MODULE_CONF STRING_ARG  */
-#line 1845 "./util/configparser.y"
+  case 447:
+#line 1853 "./util/configparser.y"
         {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 4746 "util/configparser.c"
+#line 5453 "util/configparser.c"
     break;
 
-  case 446: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG  */
-#line 1852 "./util/configparser.y"
+  case 448:
+#line 1860 "./util/configparser.y"
         {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4763,11 +5470,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4767 "util/configparser.c"
+#line 5474 "util/configparser.c"
     break;
 
-  case 447: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG  */
-#line 1870 "./util/configparser.y"
+  case 449:
+#line 1878 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4779,11 +5486,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4783 "util/configparser.c"
+#line 5490 "util/configparser.c"
     break;
 
-  case 448: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG  */
-#line 1883 "./util/configparser.y"
+  case 450:
+#line 1891 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4795,11 +5502,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4799 "util/configparser.c"
+#line 5506 "util/configparser.c"
     break;
 
-  case 449: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG  */
-#line 1896 "./util/configparser.y"
+  case 451:
+#line 1904 "./util/configparser.y"
         {
                OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -4811,11 +5518,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4815 "util/configparser.c"
+#line 5522 "util/configparser.c"
     break;
 
-  case 450: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG  */
-#line 1909 "./util/configparser.y"
+  case 452:
+#line 1917 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4823,11 +5530,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4827 "util/configparser.c"
+#line 5534 "util/configparser.c"
     break;
 
-  case 451: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG  */
-#line 1918 "./util/configparser.y"
+  case 453:
+#line 1926 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4835,11 +5542,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4839 "util/configparser.c"
+#line 5546 "util/configparser.c"
     break;
 
-  case 452: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG  */
-#line 1927 "./util/configparser.y"
+  case 454:
+#line 1935 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4847,11 +5554,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4851 "util/configparser.c"
+#line 5558 "util/configparser.c"
     break;
 
-  case 453: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG  */
-#line 1936 "./util/configparser.y"
+  case 455:
+#line 1944 "./util/configparser.y"
         {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4859,11 +5566,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4863 "util/configparser.c"
+#line 5570 "util/configparser.c"
     break;
 
-  case 454: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG  */
-#line 1945 "./util/configparser.y"
+  case 456:
+#line 1953 "./util/configparser.y"
         {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4872,11 +5579,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4876 "util/configparser.c"
+#line 5583 "util/configparser.c"
     break;
 
-  case 455: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG  */
-#line 1955 "./util/configparser.y"
+  case 457:
+#line 1963 "./util/configparser.y"
         {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4885,11 +5592,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4889 "util/configparser.c"
+#line 5596 "util/configparser.c"
     break;
 
-  case 456: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG  */
-#line 1965 "./util/configparser.y"
+  case 458:
+#line 1973 "./util/configparser.y"
         {
                OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4899,11 +5606,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4903 "util/configparser.c"
+#line 5610 "util/configparser.c"
     break;
 
-  case 457: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG  */
-#line 1976 "./util/configparser.y"
+  case 459:
+#line 1984 "./util/configparser.y"
         {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4911,11 +5618,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4915 "util/configparser.c"
+#line 5622 "util/configparser.c"
     break;
 
-  case 458: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG  */
-#line 1985 "./util/configparser.y"
+  case 460:
+#line 1993 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4923,11 +5630,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4927 "util/configparser.c"
+#line 5634 "util/configparser.c"
     break;
 
-  case 459: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG  */
-#line 1994 "./util/configparser.y"
+  case 461:
+#line 2002 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4935,11 +5642,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4939 "util/configparser.c"
+#line 5646 "util/configparser.c"
     break;
 
-  case 460: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG  */
-#line 2003 "./util/configparser.y"
+  case 462:
+#line 2011 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4947,11 +5654,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4951 "util/configparser.c"
+#line 5658 "util/configparser.c"
     break;
 
-  case 461: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG  */
-#line 2012 "./util/configparser.y"
+  case 463:
+#line 2020 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4959,11 +5666,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4963 "util/configparser.c"
+#line 5670 "util/configparser.c"
     break;
 
-  case 462: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG  */
-#line 2021 "./util/configparser.y"
+  case 464:
+#line 2029 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4971,11 +5678,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4975 "util/configparser.c"
+#line 5682 "util/configparser.c"
     break;
 
-  case 463: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG  */
-#line 2030 "./util/configparser.y"
+  case 465:
+#line 2038 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4983,11 +5690,11 @@ yyreduce:
                else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4987 "util/configparser.c"
+#line 5694 "util/configparser.c"
     break;
 
-  case 464: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG  */
-#line 2039 "./util/configparser.y"
+  case 466:
+#line 2047 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4999,11 +5706,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 5003 "util/configparser.c"
+#line 5710 "util/configparser.c"
     break;
 
-  case 465: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG  */
-#line 2052 "./util/configparser.y"
+  case 467:
+#line 2060 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5015,11 +5722,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 5019 "util/configparser.c"
+#line 5726 "util/configparser.c"
     break;
 
-  case 466: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG  */
-#line 2065 "./util/configparser.y"
+  case 468:
+#line 2073 "./util/configparser.y"
         {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5027,21 +5734,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5031 "util/configparser.c"
+#line 5738 "util/configparser.c"
     break;
 
-  case 467: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG  */
-#line 2074 "./util/configparser.y"
+  case 469:
+#line 2082 "./util/configparser.y"
         {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 5041 "util/configparser.c"
+#line 5748 "util/configparser.c"
     break;
 
-  case 468: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG  */
-#line 2081 "./util/configparser.y"
+  case 470:
+#line 2089 "./util/configparser.y"
         {
                OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5049,11 +5756,11 @@ yyreduce:
                else    cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5053 "util/configparser.c"
+#line 5760 "util/configparser.c"
     break;
 
-  case 469: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG  */
-#line 2090 "./util/configparser.y"
+  case 471:
+#line 2098 "./util/configparser.y"
         {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5061,11 +5768,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5065 "util/configparser.c"
+#line 5772 "util/configparser.c"
     break;
 
-  case 470: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG  */
-#line 2099 "./util/configparser.y"
+  case 472:
+#line 2107 "./util/configparser.y"
         {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5073,11 +5780,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5077 "util/configparser.c"
+#line 5784 "util/configparser.c"
     break;
 
-  case 471: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG  */
-#line 2108 "./util/configparser.y"
+  case 473:
+#line 2116 "./util/configparser.y"
         {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5085,11 +5792,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5089 "util/configparser.c"
+#line 5796 "util/configparser.c"
     break;
 
-  case 472: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG  */
-#line 2117 "./util/configparser.y"
+  case 474:
+#line 2125 "./util/configparser.y"
         {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5098,22 +5805,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5102 "util/configparser.c"
+#line 5809 "util/configparser.c"
     break;
 
-  case 473: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG  */
-#line 2126 "./util/configparser.y"
+  case 475:
+#line 2134 "./util/configparser.y"
         {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5113 "util/configparser.c"
+#line 5820 "util/configparser.c"
     break;
 
-  case 474: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG  */
-#line 2134 "./util/configparser.y"
+  case 476:
+#line 2142 "./util/configparser.y"
         {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -5125,22 +5832,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5129 "util/configparser.c"
+#line 5836 "util/configparser.c"
     break;
 
-  case 475: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG  */
-#line 2147 "./util/configparser.y"
+  case 477:
+#line 2155 "./util/configparser.y"
         {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5140 "util/configparser.c"
+#line 5847 "util/configparser.c"
     break;
 
-  case 476: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
-#line 2155 "./util/configparser.y"
+  case 478:
+#line 2163 "./util/configparser.y"
         {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -5184,21 +5891,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5188 "util/configparser.c"
+#line 5895 "util/configparser.c"
     break;
 
-  case 477: /* server_local_data: VAR_LOCAL_DATA STRING_ARG  */
-#line 2200 "./util/configparser.y"
+  case 479:
+#line 2208 "./util/configparser.y"
         {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 5198 "util/configparser.c"
+#line 5905 "util/configparser.c"
     break;
 
-  case 478: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
-#line 2207 "./util/configparser.y"
+  case 480:
+#line 2215 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -5212,11 +5919,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 5216 "util/configparser.c"
+#line 5923 "util/configparser.c"
     break;
 
-  case 479: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG  */
-#line 2222 "./util/configparser.y"
+  case 481:
+#line 2230 "./util/configparser.y"
         {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5225,11 +5932,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5229 "util/configparser.c"
+#line 5936 "util/configparser.c"
     break;
 
-  case 480: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG  */
-#line 2232 "./util/configparser.y"
+  case 482:
+#line 2240 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5238,41 +5945,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5242 "util/configparser.c"
+#line 5949 "util/configparser.c"
     break;
 
-  case 481: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG  */
-#line 2242 "./util/configparser.y"
+  case 483:
+#line 2250 "./util/configparser.y"
         {
                OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5252 "util/configparser.c"
+#line 5959 "util/configparser.c"
     break;
 
-  case 482: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG  */
-#line 2249 "./util/configparser.y"
+  case 484:
+#line 2257 "./util/configparser.y"
         {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5262 "util/configparser.c"
+#line 5969 "util/configparser.c"
     break;
 
-  case 483: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG  */
-#line 2256 "./util/configparser.y"
+  case 485:
+#line 2264 "./util/configparser.y"
         {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 5272 "util/configparser.c"
+#line 5979 "util/configparser.c"
     break;
 
-  case 484: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG  */
-#line 2263 "./util/configparser.y"
+  case 486:
+#line 2271 "./util/configparser.y"
         {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5280,22 +5987,22 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5284 "util/configparser.c"
+#line 5991 "util/configparser.c"
     break;
 
-  case 485: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG  */
-#line 2272 "./util/configparser.y"
+  case 487:
+#line 2280 "./util/configparser.y"
         {
                OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
                        (yyvsp[0].str)))
                        fatal_exit("out of memory adding dns64-ignore-aaaa");
        }
-#line 5295 "util/configparser.c"
+#line 6002 "util/configparser.c"
     break;
 
-  case 486: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG  */
-#line 2280 "./util/configparser.y"
+  case 488:
+#line 2288 "./util/configparser.y"
         {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -5308,11 +6015,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5312 "util/configparser.c"
+#line 6019 "util/configparser.c"
     break;
 
-  case 487: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG  */
-#line 2294 "./util/configparser.y"
+  case 489:
+#line 2302 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5332,11 +6039,11 @@ yyreduce:
                        }
                }
        }
-#line 5336 "util/configparser.c"
+#line 6043 "util/configparser.c"
     break;
 
-  case 488: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG  */
-#line 2315 "./util/configparser.y"
+  case 490:
+#line 2323 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5356,11 +6063,11 @@ yyreduce:
                        }
                }
        }
-#line 5360 "util/configparser.c"
+#line 6067 "util/configparser.c"
     break;
 
-  case 489: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
-#line 2336 "./util/configparser.y"
+  case 491:
+#line 2344 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -5371,11 +6078,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5375 "util/configparser.c"
+#line 6082 "util/configparser.c"
     break;
 
-  case 490: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
-#line 2348 "./util/configparser.y"
+  case 492:
+#line 2356 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -5386,11 +6093,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5390 "util/configparser.c"
+#line 6097 "util/configparser.c"
     break;
 
-  case 491: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG  */
-#line 2360 "./util/configparser.y"
+  case 493:
+#line 2368 "./util/configparser.y"
         {
                OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
@@ -5401,11 +6108,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 5405 "util/configparser.c"
+#line 6112 "util/configparser.c"
     break;
 
-  case 492: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG  */
-#line 2372 "./util/configparser.y"
+  case 494:
+#line 2380 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -5413,11 +6120,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 5417 "util/configparser.c"
+#line 6124 "util/configparser.c"
     break;
 
-  case 493: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG  */
-#line 2381 "./util/configparser.y"
+  case 495:
+#line 2389 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -5437,11 +6144,11 @@ yyreduce:
                        }
                }
        }
-#line 5441 "util/configparser.c"
+#line 6148 "util/configparser.c"
     break;
 
-  case 494: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG  */
-#line 2402 "./util/configparser.y"
+  case 496:
+#line 2410 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5449,11 +6156,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5453 "util/configparser.c"
+#line 6160 "util/configparser.c"
     break;
 
-  case 495: /* server_ratelimit: VAR_RATELIMIT STRING_ARG  */
-#line 2411 "./util/configparser.y"
+  case 497:
+#line 2419 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5461,33 +6168,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5465 "util/configparser.c"
+#line 6172 "util/configparser.c"
     break;
 
-  case 496: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG  */
-#line 2420 "./util/configparser.y"
+  case 498:
+#line 2428 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5476 "util/configparser.c"
+#line 6183 "util/configparser.c"
     break;
 
-  case 497: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG  */
-#line 2428 "./util/configparser.y"
+  case 499:
+#line 2436 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 5487 "util/configparser.c"
+#line 6194 "util/configparser.c"
     break;
 
-  case 498: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG  */
-#line 2436 "./util/configparser.y"
+  case 500:
+#line 2444 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -5499,11 +6206,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5503 "util/configparser.c"
+#line 6210 "util/configparser.c"
     break;
 
-  case 499: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG  */
-#line 2449 "./util/configparser.y"
+  case 501:
+#line 2457 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -5515,11 +6222,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5519 "util/configparser.c"
+#line 6226 "util/configparser.c"
     break;
 
-  case 500: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG  */
-#line 2462 "./util/configparser.y"
+  case 502:
+#line 2470 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -5533,11 +6240,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 5537 "util/configparser.c"
+#line 6244 "util/configparser.c"
     break;
 
-  case 501: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG  */
-#line 2477 "./util/configparser.y"
+  case 503:
+#line 2485 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -5551,11 +6258,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 5555 "util/configparser.c"
+#line 6262 "util/configparser.c"
     break;
 
-  case 502: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG  */
-#line 2492 "./util/configparser.y"
+  case 504:
+#line 2500 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5563,11 +6270,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5567 "util/configparser.c"
+#line 6274 "util/configparser.c"
     break;
 
-  case 503: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG  */
-#line 2501 "./util/configparser.y"
+  case 505:
+#line 2509 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5575,11 +6282,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5579 "util/configparser.c"
+#line 6286 "util/configparser.c"
     break;
 
-  case 504: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG  */
-#line 2510 "./util/configparser.y"
+  case 506:
+#line 2518 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5588,11 +6295,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5592 "util/configparser.c"
+#line 6299 "util/configparser.c"
     break;
 
-  case 505: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG  */
-#line 2520 "./util/configparser.y"
+  case 507:
+#line 2528 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5601,11 +6308,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5605 "util/configparser.c"
+#line 6312 "util/configparser.c"
     break;
 
-  case 506: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG  */
-#line 2530 "./util/configparser.y"
+  case 508:
+#line 2538 "./util/configparser.y"
         {
                OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5613,20 +6320,20 @@ yyreduce:
                else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5617 "util/configparser.c"
+#line 6324 "util/configparser.c"
     break;
 
-  case 507: /* server_low_rtt: VAR_LOW_RTT STRING_ARG  */
-#line 2539 "./util/configparser.y"
+  case 509:
+#line 2547 "./util/configparser.y"
         {
                OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
                free((yyvsp[0].str));
        }
-#line 5626 "util/configparser.c"
+#line 6333 "util/configparser.c"
     break;
 
-  case 508: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG  */
-#line 2545 "./util/configparser.y"
+  case 510:
+#line 2553 "./util/configparser.y"
         {
                OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) <= 0)
@@ -5634,11 +6341,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5638 "util/configparser.c"
+#line 6345 "util/configparser.c"
     break;
 
-  case 509: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG  */
-#line 2554 "./util/configparser.y"
+  case 511:
+#line 2562 "./util/configparser.y"
         {
                OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5646,11 +6353,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5650 "util/configparser.c"
+#line 6357 "util/configparser.c"
     break;
 
-  case 510: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG  */
-#line 2563 "./util/configparser.y"
+  case 512:
+#line 2571 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5659,11 +6366,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5663 "util/configparser.c"
+#line 6370 "util/configparser.c"
     break;
 
-  case 511: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG  */
-#line 2573 "./util/configparser.y"
+  case 513:
+#line 2581 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5672,11 +6379,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5676 "util/configparser.c"
+#line 6383 "util/configparser.c"
     break;
 
-  case 512: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG  */
-#line 2583 "./util/configparser.y"
+  case 514:
+#line 2591 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5685,11 +6392,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5689 "util/configparser.c"
+#line 6396 "util/configparser.c"
     break;
 
-  case 513: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG  */
-#line 2593 "./util/configparser.y"
+  case 515:
+#line 2601 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5697,11 +6404,11 @@ yyreduce:
                else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5701 "util/configparser.c"
+#line 6408 "util/configparser.c"
     break;
 
-  case 514: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG  */
-#line 2602 "./util/configparser.y"
+  case 516:
+#line 2610 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5710,11 +6417,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5714 "util/configparser.c"
+#line 6421 "util/configparser.c"
     break;
 
-  case 515: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG  */
-#line 2612 "./util/configparser.y"
+  case 517:
+#line 2620 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5722,11 +6429,11 @@ yyreduce:
                else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5726 "util/configparser.c"
+#line 6433 "util/configparser.c"
     break;
 
-  case 516: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG  */
-#line 2621 "./util/configparser.y"
+  case 518:
+#line 2629 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
@@ -5738,11 +6445,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5742 "util/configparser.c"
+#line 6449 "util/configparser.c"
     break;
 
-  case 517: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG  */
-#line 2634 "./util/configparser.y"
+  case 519:
+#line 2642 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
@@ -5754,11 +6461,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 5758 "util/configparser.c"
+#line 6465 "util/configparser.c"
     break;
 
-  case 518: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG  */
-#line 2647 "./util/configparser.y"
+  case 520:
+#line 2655 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
@@ -5769,11 +6476,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5773 "util/configparser.c"
+#line 6480 "util/configparser.c"
     break;
 
-  case 519: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG  */
-#line 2659 "./util/configparser.y"
+  case 521:
+#line 2667 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
@@ -5786,11 +6493,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5790 "util/configparser.c"
+#line 6497 "util/configparser.c"
     break;
 
-  case 520: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG  */
-#line 2673 "./util/configparser.y"
+  case 522:
+#line 2681 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
@@ -5801,11 +6508,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5805 "util/configparser.c"
+#line 6512 "util/configparser.c"
     break;
 
-  case 521: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG  */
-#line 2685 "./util/configparser.y"
+  case 523:
+#line 2693 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
@@ -5818,11 +6525,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 5822 "util/configparser.c"
+#line 6529 "util/configparser.c"
     break;
 
-  case 522: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG  */
-#line 2699 "./util/configparser.y"
+  case 524:
+#line 2707 "./util/configparser.y"
         {
                OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(
@@ -5830,11 +6537,11 @@ yyreduce:
                        fatal_exit("out of memory adding "
                                "edns-client-string");
        }
-#line 5834 "util/configparser.c"
+#line 6541 "util/configparser.c"
     break;
 
-  case 523: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG  */
-#line 2708 "./util/configparser.y"
+  case 525:
+#line 2716 "./util/configparser.y"
         {
                OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5845,11 +6552,11 @@ yyreduce:
                free((yyvsp[0].str));
 
        }
-#line 5849 "util/configparser.c"
+#line 6556 "util/configparser.c"
     break;
 
-  case 524: /* stub_name: VAR_NAME STRING_ARG  */
-#line 2720 "./util/configparser.y"
+  case 526:
+#line 2728 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -5858,31 +6565,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 5862 "util/configparser.c"
+#line 6569 "util/configparser.c"
     break;
 
-  case 525: /* stub_host: VAR_STUB_HOST STRING_ARG  */
-#line 2730 "./util/configparser.y"
+  case 527:
+#line 2738 "./util/configparser.y"
         {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5872 "util/configparser.c"
+#line 6579 "util/configparser.c"
     break;
 
-  case 526: /* stub_addr: VAR_STUB_ADDR STRING_ARG  */
-#line 2737 "./util/configparser.y"
+  case 528:
+#line 2745 "./util/configparser.y"
         {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5882 "util/configparser.c"
+#line 6589 "util/configparser.c"
     break;
 
-  case 527: /* stub_first: VAR_STUB_FIRST STRING_ARG  */
-#line 2744 "./util/configparser.y"
+  case 529:
+#line 2752 "./util/configparser.y"
         {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5890,11 +6597,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5894 "util/configparser.c"
+#line 6601 "util/configparser.c"
     break;
 
-  case 528: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG  */
-#line 2753 "./util/configparser.y"
+  case 530:
+#line 2761 "./util/configparser.y"
         {
                OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5902,11 +6609,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5906 "util/configparser.c"
+#line 6613 "util/configparser.c"
     break;
 
-  case 529: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG  */
-#line 2762 "./util/configparser.y"
+  case 531:
+#line 2770 "./util/configparser.y"
         {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5915,11 +6622,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5919 "util/configparser.c"
+#line 6626 "util/configparser.c"
     break;
 
-  case 530: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG  */
-#line 2772 "./util/configparser.y"
+  case 532:
+#line 2780 "./util/configparser.y"
         {
                 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5928,11 +6635,11 @@ yyreduce:
                         (strcmp((yyvsp[0].str), "yes")==0);
                 free((yyvsp[0].str));
         }
-#line 5932 "util/configparser.c"
+#line 6639 "util/configparser.c"
     break;
 
-  case 531: /* stub_prime: VAR_STUB_PRIME STRING_ARG  */
-#line 2782 "./util/configparser.y"
+  case 533:
+#line 2790 "./util/configparser.y"
         {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5941,11 +6648,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5945 "util/configparser.c"
+#line 6652 "util/configparser.c"
     break;
 
-  case 532: /* forward_name: VAR_NAME STRING_ARG  */
-#line 2792 "./util/configparser.y"
+  case 534:
+#line 2800 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -5954,31 +6661,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 5958 "util/configparser.c"
+#line 6665 "util/configparser.c"
     break;
 
-  case 533: /* forward_host: VAR_FORWARD_HOST STRING_ARG  */
-#line 2802 "./util/configparser.y"
+  case 535:
+#line 2810 "./util/configparser.y"
         {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5968 "util/configparser.c"
+#line 6675 "util/configparser.c"
     break;
 
-  case 534: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG  */
-#line 2809 "./util/configparser.y"
+  case 536:
+#line 2817 "./util/configparser.y"
         {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 5978 "util/configparser.c"
+#line 6685 "util/configparser.c"
     break;
 
-  case 535: /* forward_first: VAR_FORWARD_FIRST STRING_ARG  */
-#line 2816 "./util/configparser.y"
+  case 537:
+#line 2824 "./util/configparser.y"
         {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5986,11 +6693,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5990 "util/configparser.c"
+#line 6697 "util/configparser.c"
     break;
 
-  case 536: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG  */
-#line 2825 "./util/configparser.y"
+  case 538:
+#line 2833 "./util/configparser.y"
         {
                OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5998,11 +6705,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6002 "util/configparser.c"
+#line 6709 "util/configparser.c"
     break;
 
-  case 537: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG  */
-#line 2834 "./util/configparser.y"
+  case 539:
+#line 2842 "./util/configparser.y"
         {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6011,11 +6718,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6015 "util/configparser.c"
+#line 6722 "util/configparser.c"
     break;
 
-  case 538: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG  */
-#line 2844 "./util/configparser.y"
+  case 540:
+#line 2852 "./util/configparser.y"
         {
                 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6024,11 +6731,11 @@ yyreduce:
                         (strcmp((yyvsp[0].str), "yes")==0);
                 free((yyvsp[0].str));
         }
-#line 6028 "util/configparser.c"
+#line 6735 "util/configparser.c"
     break;
 
-  case 539: /* auth_name: VAR_NAME STRING_ARG  */
-#line 2854 "./util/configparser.y"
+  case 541:
+#line 2862 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->auths->name)
@@ -6037,52 +6744,52 @@ yyreduce:
                free(cfg_parser->cfg->auths->name);
                cfg_parser->cfg->auths->name = (yyvsp[0].str);
        }
-#line 6041 "util/configparser.c"
+#line 6748 "util/configparser.c"
     break;
 
-  case 540: /* auth_zonefile: VAR_ZONEFILE STRING_ARG  */
-#line 2864 "./util/configparser.y"
+  case 542:
+#line 2872 "./util/configparser.y"
         {
                OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->zonefile);
                cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
        }
-#line 6051 "util/configparser.c"
+#line 6758 "util/configparser.c"
     break;
 
-  case 541: /* auth_master: VAR_MASTER STRING_ARG  */
-#line 2871 "./util/configparser.y"
+  case 543:
+#line 2879 "./util/configparser.y"
         {
                OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6061 "util/configparser.c"
+#line 6768 "util/configparser.c"
     break;
 
-  case 542: /* auth_url: VAR_URL STRING_ARG  */
-#line 2878 "./util/configparser.y"
+  case 544:
+#line 2886 "./util/configparser.y"
         {
                OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6071 "util/configparser.c"
+#line 6778 "util/configparser.c"
     break;
 
-  case 543: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG  */
-#line 2885 "./util/configparser.y"
+  case 545:
+#line 2893 "./util/configparser.y"
         {
                OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6082 "util/configparser.c"
+#line 6789 "util/configparser.c"
     break;
 
-  case 544: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG  */
-#line 2893 "./util/configparser.y"
+  case 546:
+#line 2901 "./util/configparser.y"
         {
                OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6091,11 +6798,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6095 "util/configparser.c"
+#line 6802 "util/configparser.c"
     break;
 
-  case 545: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG  */
-#line 2903 "./util/configparser.y"
+  case 547:
+#line 2911 "./util/configparser.y"
         {
                OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6104,11 +6811,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6108 "util/configparser.c"
+#line 6815 "util/configparser.c"
     break;
 
-  case 546: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG  */
-#line 2913 "./util/configparser.y"
+  case 548:
+#line 2921 "./util/configparser.y"
         {
                OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6117,11 +6824,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6121 "util/configparser.c"
+#line 6828 "util/configparser.c"
     break;
 
-  case 547: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG  */
-#line 2923 "./util/configparser.y"
+  case 549:
+#line 2931 "./util/configparser.y"
         {
                OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6130,11 +6837,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6134 "util/configparser.c"
+#line 6841 "util/configparser.c"
     break;
 
-  case 548: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG  */
-#line 2933 "./util/configparser.y"
+  case 550:
+#line 2941 "./util/configparser.y"
         {
                OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6143,11 +6850,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6147 "util/configparser.c"
+#line 6854 "util/configparser.c"
     break;
 
-  case 549: /* view_name: VAR_NAME STRING_ARG  */
-#line 2943 "./util/configparser.y"
+  case 551:
+#line 2951 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -6156,11 +6863,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 6160 "util/configparser.c"
+#line 6867 "util/configparser.c"
     break;
 
-  case 550: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
-#line 2953 "./util/configparser.y"
+  case 552:
+#line 2961 "./util/configparser.y"
         {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -6205,11 +6912,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 6209 "util/configparser.c"
+#line 6916 "util/configparser.c"
     break;
 
-  case 551: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
-#line 2999 "./util/configparser.y"
+  case 553:
+#line 3007 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -6218,33 +6925,33 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 6222 "util/configparser.c"
+#line 6929 "util/configparser.c"
     break;
 
-  case 552: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
-#line 3009 "./util/configparser.y"
+  case 554:
+#line 3017 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(
                        &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6233 "util/configparser.c"
+#line 6940 "util/configparser.c"
     break;
 
-  case 553: /* view_local_data: VAR_LOCAL_DATA STRING_ARG  */
-#line 3017 "./util/configparser.y"
+  case 555:
+#line 3025 "./util/configparser.y"
         {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
                        fatal_exit("out of memory adding local-data");
                }
        }
-#line 6244 "util/configparser.c"
+#line 6951 "util/configparser.c"
     break;
 
-  case 554: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
-#line 3025 "./util/configparser.y"
+  case 556:
+#line 3033 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -6258,11 +6965,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 6262 "util/configparser.c"
+#line 6969 "util/configparser.c"
     break;
 
-  case 555: /* view_first: VAR_VIEW_FIRST STRING_ARG  */
-#line 3040 "./util/configparser.y"
+  case 557:
+#line 3048 "./util/configparser.y"
         {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6270,19 +6977,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6274 "util/configparser.c"
+#line 6981 "util/configparser.c"
     break;
 
-  case 556: /* rcstart: VAR_REMOTE_CONTROL  */
-#line 3049 "./util/configparser.y"
+  case 558:
+#line 3057 "./util/configparser.y"
         {
                OUTYY(("\nP(remote-control:)\n"));
        }
-#line 6282 "util/configparser.c"
+#line 6989 "util/configparser.c"
     break;
 
-  case 567: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG  */
-#line 3060 "./util/configparser.y"
+  case 569:
+#line 3068 "./util/configparser.y"
         {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6291,11 +6998,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6295 "util/configparser.c"
+#line 7002 "util/configparser.c"
     break;
 
-  case 568: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG  */
-#line 3070 "./util/configparser.y"
+  case 570:
+#line 3078 "./util/configparser.y"
         {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6303,79 +7010,79 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6307 "util/configparser.c"
+#line 7014 "util/configparser.c"
     break;
 
-  case 569: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG  */
-#line 3079 "./util/configparser.y"
+  case 571:
+#line 3087 "./util/configparser.y"
         {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6317 "util/configparser.c"
+#line 7024 "util/configparser.c"
     break;
 
-  case 570: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG  */
-#line 3086 "./util/configparser.y"
+  case 572:
+#line 3094 "./util/configparser.y"
         {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6327 "util/configparser.c"
+#line 7034 "util/configparser.c"
     break;
 
-  case 571: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG  */
-#line 3093 "./util/configparser.y"
+  case 573:
+#line 3101 "./util/configparser.y"
         {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 6337 "util/configparser.c"
+#line 7044 "util/configparser.c"
     break;
 
-  case 572: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG  */
-#line 3100 "./util/configparser.y"
+  case 574:
+#line 3108 "./util/configparser.y"
         {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 6347 "util/configparser.c"
+#line 7054 "util/configparser.c"
     break;
 
-  case 573: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG  */
-#line 3107 "./util/configparser.y"
+  case 575:
+#line 3115 "./util/configparser.y"
         {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 6357 "util/configparser.c"
+#line 7064 "util/configparser.c"
     break;
 
-  case 574: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG  */
-#line 3114 "./util/configparser.y"
+  case 576:
+#line 3122 "./util/configparser.y"
         {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 6367 "util/configparser.c"
+#line 7074 "util/configparser.c"
     break;
 
-  case 575: /* dtstart: VAR_DNSTAP  */
-#line 3121 "./util/configparser.y"
+  case 577:
+#line 3129 "./util/configparser.y"
         {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 6375 "util/configparser.c"
+#line 7082 "util/configparser.c"
     break;
 
-  case 597: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG  */
-#line 3141 "./util/configparser.y"
+  case 599:
+#line 3149 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6383,11 +7090,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6387 "util/configparser.c"
+#line 7094 "util/configparser.c"
     break;
 
-  case 598: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG  */
-#line 3150 "./util/configparser.y"
+  case 600:
+#line 3158 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6396,31 +7103,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6400 "util/configparser.c"
+#line 7107 "util/configparser.c"
     break;
 
-  case 599: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG  */
-#line 3160 "./util/configparser.y"
+  case 601:
+#line 3168 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 6410 "util/configparser.c"
+#line 7117 "util/configparser.c"
     break;
 
-  case 600: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG  */
-#line 3167 "./util/configparser.y"
+  case 602:
+#line 3175 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_ip);
                cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
        }
-#line 6420 "util/configparser.c"
+#line 7127 "util/configparser.c"
     break;
 
-  case 601: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG  */
-#line 3174 "./util/configparser.y"
+  case 603:
+#line 3182 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6428,51 +7135,51 @@ yyreduce:
                else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6432 "util/configparser.c"
+#line 7139 "util/configparser.c"
     break;
 
-  case 602: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG  */
-#line 3183 "./util/configparser.y"
+  case 604:
+#line 3191 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_server_name);
                cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
        }
-#line 6442 "util/configparser.c"
+#line 7149 "util/configparser.c"
     break;
 
-  case 603: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG  */
-#line 3190 "./util/configparser.y"
+  case 605:
+#line 3198 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_cert_bundle);
                cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
        }
-#line 6452 "util/configparser.c"
+#line 7159 "util/configparser.c"
     break;
 
-  case 604: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG  */
-#line 3197 "./util/configparser.y"
+  case 606:
+#line 3205 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_key_file);
                cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
        }
-#line 6462 "util/configparser.c"
+#line 7169 "util/configparser.c"
     break;
 
-  case 605: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG  */
-#line 3204 "./util/configparser.y"
+  case 607:
+#line 3212 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_cert_file);
                cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
        }
-#line 6472 "util/configparser.c"
+#line 7179 "util/configparser.c"
     break;
 
-  case 606: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG  */
-#line 3211 "./util/configparser.y"
+  case 608:
+#line 3219 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6480,11 +7187,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6484 "util/configparser.c"
+#line 7191 "util/configparser.c"
     break;
 
-  case 607: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG  */
-#line 3220 "./util/configparser.y"
+  case 609:
+#line 3228 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6492,31 +7199,31 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6496 "util/configparser.c"
+#line 7203 "util/configparser.c"
     break;
 
-  case 608: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG  */
-#line 3229 "./util/configparser.y"
+  case 610:
+#line 3237 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 6506 "util/configparser.c"
+#line 7213 "util/configparser.c"
     break;
 
-  case 609: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG  */
-#line 3236 "./util/configparser.y"
+  case 611:
+#line 3244 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 6516 "util/configparser.c"
+#line 7223 "util/configparser.c"
     break;
 
-  case 610: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG  */
-#line 3243 "./util/configparser.y"
+  case 612:
+#line 3251 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6525,11 +7232,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6529 "util/configparser.c"
+#line 7236 "util/configparser.c"
     break;
 
-  case 611: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG  */
-#line 3253 "./util/configparser.y"
+  case 613:
+#line 3261 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6538,11 +7245,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6542 "util/configparser.c"
+#line 7249 "util/configparser.c"
     break;
 
-  case 612: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG  */
-#line 3263 "./util/configparser.y"
+  case 614:
+#line 3271 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6551,11 +7258,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6555 "util/configparser.c"
+#line 7262 "util/configparser.c"
     break;
 
-  case 613: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG  */
-#line 3273 "./util/configparser.y"
+  case 615:
+#line 3281 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6564,11 +7271,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6568 "util/configparser.c"
+#line 7275 "util/configparser.c"
     break;
 
-  case 614: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG  */
-#line 3283 "./util/configparser.y"
+  case 616:
+#line 3291 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6577,11 +7284,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6581 "util/configparser.c"
+#line 7288 "util/configparser.c"
     break;
 
-  case 615: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG  */
-#line 3293 "./util/configparser.y"
+  case 617:
+#line 3301 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6590,47 +7297,47 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6594 "util/configparser.c"
+#line 7301 "util/configparser.c"
     break;
 
-  case 616: /* pythonstart: VAR_PYTHON  */
-#line 3303 "./util/configparser.y"
+  case 618:
+#line 3311 "./util/configparser.y"
         {
                OUTYY(("\nP(python:)\n"));
        }
-#line 6602 "util/configparser.c"
+#line 7309 "util/configparser.c"
     break;
 
-  case 620: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG  */
-#line 3312 "./util/configparser.y"
+  case 622:
+#line 3320 "./util/configparser.y"
         {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6612 "util/configparser.c"
+#line 7319 "util/configparser.c"
     break;
 
-  case 621: /* dynlibstart: VAR_DYNLIB  */
-#line 3318 "./util/configparser.y"
+  case 623:
+#line 3326 "./util/configparser.y"
         { 
                OUTYY(("\nP(dynlib:)\n")); 
        }
-#line 6620 "util/configparser.c"
+#line 7327 "util/configparser.c"
     break;
 
-  case 625: /* dl_file: VAR_DYNLIB_FILE STRING_ARG  */
-#line 3327 "./util/configparser.y"
+  case 627:
+#line 3335 "./util/configparser.y"
         {
                OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6630 "util/configparser.c"
+#line 7337 "util/configparser.c"
     break;
 
-  case 626: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG  */
-#line 3333 "./util/configparser.y"
+  case 628:
+#line 3341 "./util/configparser.y"
         {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6639,21 +7346,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6643 "util/configparser.c"
+#line 7350 "util/configparser.c"
     break;
 
-  case 627: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG  */
-#line 3343 "./util/configparser.y"
+  case 629:
+#line 3351 "./util/configparser.y"
         {
                OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->log_identity);
                cfg_parser->cfg->log_identity = (yyvsp[0].str);
        }
-#line 6653 "util/configparser.c"
+#line 7360 "util/configparser.c"
     break;
 
-  case 628: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
-#line 3350 "./util/configparser.y"
+  case 630:
+#line 3358 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -6661,30 +7368,30 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 6665 "util/configparser.c"
+#line 7372 "util/configparser.c"
     break;
 
-  case 629: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
-#line 3359 "./util/configparser.y"
+  case 631:
+#line 3367 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6676 "util/configparser.c"
+#line 7383 "util/configparser.c"
     break;
 
-  case 630: /* dnscstart: VAR_DNSCRYPT  */
-#line 3367 "./util/configparser.y"
+  case 632:
+#line 3375 "./util/configparser.y"
         {
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 6684 "util/configparser.c"
+#line 7391 "util/configparser.c"
     break;
 
-  case 643: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG  */
-#line 3383 "./util/configparser.y"
+  case 645:
+#line 3391 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6692,11 +7399,11 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6696 "util/configparser.c"
+#line 7403 "util/configparser.c"
     break;
 
-  case 644: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG  */
-#line 3393 "./util/configparser.y"
+  case 646:
+#line 3401 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6704,21 +7411,21 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6708 "util/configparser.c"
+#line 7415 "util/configparser.c"
     break;
 
-  case 645: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG  */
-#line 3402 "./util/configparser.y"
+  case 647:
+#line 3410 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnscrypt_provider);
                cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
        }
-#line 6718 "util/configparser.c"
+#line 7425 "util/configparser.c"
     break;
 
-  case 646: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG  */
-#line 3409 "./util/configparser.y"
+  case 648:
+#line 3417 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
@@ -6726,21 +7433,21 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 6730 "util/configparser.c"
+#line 7437 "util/configparser.c"
     break;
 
-  case 647: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG  */
-#line 3418 "./util/configparser.y"
+  case 649:
+#line 3426 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
        }
-#line 6740 "util/configparser.c"
+#line 7447 "util/configparser.c"
     break;
 
-  case 648: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG  */
-#line 3425 "./util/configparser.y"
+  case 650:
+#line 3433 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
@@ -6748,22 +7455,22 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 6752 "util/configparser.c"
+#line 7459 "util/configparser.c"
     break;
 
-  case 649: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG  */
-#line 3434 "./util/configparser.y"
+  case 651:
+#line 3442 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 6763 "util/configparser.c"
+#line 7470 "util/configparser.c"
     break;
 
-  case 650: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG  */
-#line 3442 "./util/configparser.y"
+  case 652:
+#line 3450 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0) {
@@ -6775,22 +7482,22 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 6779 "util/configparser.c"
+#line 7486 "util/configparser.c"
     break;
 
-  case 651: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG  */
-#line 3455 "./util/configparser.y"
+  case 653:
+#line 3463 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 6790 "util/configparser.c"
+#line 7497 "util/configparser.c"
     break;
 
-  case 652: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG  */
-#line 3463 "./util/configparser.y"
+  case 654:
+#line 3471 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0) {
@@ -6802,19 +7509,19 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 6806 "util/configparser.c"
+#line 7513 "util/configparser.c"
     break;
 
-  case 653: /* cachedbstart: VAR_CACHEDB  */
-#line 3476 "./util/configparser.y"
+  case 655:
+#line 3484 "./util/configparser.y"
         {
                OUTYY(("\nP(cachedb:)\n"));
        }
-#line 6814 "util/configparser.c"
+#line 7521 "util/configparser.c"
     break;
 
-  case 662: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG  */
-#line 3487 "./util/configparser.y"
+  case 664:
+#line 3495 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
@@ -6825,11 +7532,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6829 "util/configparser.c"
+#line 7536 "util/configparser.c"
     break;
 
-  case 663: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG  */
-#line 3499 "./util/configparser.y"
+  case 665:
+#line 3507 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
@@ -6840,11 +7547,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6844 "util/configparser.c"
+#line 7551 "util/configparser.c"
     break;
 
-  case 664: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG  */
-#line 3511 "./util/configparser.y"
+  case 666:
+#line 3519 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
@@ -6855,11 +7562,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6859 "util/configparser.c"
+#line 7566 "util/configparser.c"
     break;
 
-  case 665: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG  */
-#line 3523 "./util/configparser.y"
+  case 667:
+#line 3531 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                int port;
@@ -6873,11 +7580,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6877 "util/configparser.c"
+#line 7584 "util/configparser.c"
     break;
 
-  case 666: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG  */
-#line 3538 "./util/configparser.y"
+  case 668:
+#line 3546 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
@@ -6889,11 +7596,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6893 "util/configparser.c"
+#line 7600 "util/configparser.c"
     break;
 
-  case 667: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG  */
-#line 3551 "./util/configparser.y"
+  case 669:
+#line 3559 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
@@ -6905,11 +7612,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6909 "util/configparser.c"
+#line 7616 "util/configparser.c"
     break;
 
-  case 668: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG  */
-#line 3564 "./util/configparser.y"
+  case 670:
+#line 3572 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if (atoi((yyvsp[0].str)) < 0)
@@ -6919,19 +7626,19 @@ yyreduce:
                                fatal_exit("out of memory adding tcp connection limit");
                }
        }
-#line 6923 "util/configparser.c"
+#line 7630 "util/configparser.c"
     break;
 
-  case 669: /* ipsetstart: VAR_IPSET  */
-#line 3575 "./util/configparser.y"
+  case 671:
+#line 3583 "./util/configparser.y"
                 {
                        OUTYY(("\nP(ipset:)\n"));
                }
-#line 6931 "util/configparser.c"
+#line 7638 "util/configparser.c"
     break;
 
-  case 674: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG  */
-#line 3584 "./util/configparser.y"
+  case 676:
+#line 3592 "./util/configparser.y"
                 {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
@@ -6945,11 +7652,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6949 "util/configparser.c"
+#line 7656 "util/configparser.c"
     break;
 
-  case 675: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG  */
-#line 3599 "./util/configparser.y"
+  case 677:
+#line 3607 "./util/configparser.y"
         {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
@@ -6963,11 +7670,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 6967 "util/configparser.c"
+#line 7674 "util/configparser.c"
     break;
 
 
-#line 6971 "util/configparser.c"
+#line 7678 "util/configparser.c"
 
       default: break;
     }
@@ -7127,13 +7834,13 @@ yyabortlab:
 yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  goto yyreturn;
+  /* Fall through.  */
 #endif
 
 
-/*-------------------------------------------------------.
-| yyreturn -- parsing is finished, clean up and return.  |
-`-------------------------------------------------------*/
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -7161,7 +7868,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 3613 "./util/configparser.y"
+#line 3621 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index d919cf29cd43be4e970663fe9c6c8d2e88f9b8be..6dcbcb41ed8993917e89f5e5c98c57d2697ce38e 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -374,12 +374,12 @@ extern int yydebug;
     VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE  */
     VAR_ZONEMD_CHECK = 576,        /* VAR_ZONEMD_CHECK  */
     VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE  */
-    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
+    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
+    VAR_INTERFACE_AUTOMATIC_PORTS = 579 /* VAR_INTERFACE_AUTOMATIC_PORTS  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
 /* Token kinds.  */
-#define YYEMPTY -2
 #define YYEOF 0
 #define YYerror 256
 #define YYUNDEF 257
@@ -704,6 +704,7 @@ extern int yydebug;
 #define VAR_ZONEMD_CHECK 576
 #define VAR_ZONEMD_REJECT_ABSENCE 577
 #define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578
+#define VAR_INTERFACE_AUTOMATIC_PORTS 579
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -713,7 +714,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 717 "util/configparser.h"
+#line 718 "util/configparser.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
index d4f965f94465ae5f0cb243fa2e3bdabbfca587cc..4ec9e6350037c2377971b3556ad4f00b9fd1415e 100644 (file)
@@ -188,7 +188,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING
 %token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID
 %token VAR_ZONEMD_PERMISSIVE_MODE VAR_ZONEMD_CHECK VAR_ZONEMD_REJECT_ABSENCE
-%token VAR_RPZ_SIGNAL_NXDOMAIN_RA
+%token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -311,7 +311,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_tls_use_sni | server_edns_client_string |
        server_edns_client_string_opcode | server_nsid |
        server_zonemd_permissive_mode | server_max_reuse_tcp_queries |
-       server_tcp_reuse_timeout | server_tcp_auth_query_timeout
+       server_tcp_reuse_timeout | server_tcp_auth_query_timeout |
+       server_interface_automatic_ports
 
        ;
 stubstart: VAR_STUB_ZONE
@@ -800,6 +801,13 @@ server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG
                free($2);
        }
        ;
+server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG
+       {
+               OUTYY(("P(server_interface_automatic_ports:%s)\n", $2));
+               free(cfg_parser->cfg->if_automatic_ports);
+               cfg_parser->cfg->if_automatic_ports = $2;
+       }
+       ;
 server_do_ip4: VAR_DO_IP4 STRING_ARG
        {
                OUTYY(("P(server_do_ip4:%s)\n", $2));