]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Applied patch from Daisuke HIGASHI for rrset-roundrobin and
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 10 Apr 2012 09:16:39 +0000 (09:16 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 10 Apr 2012 09:16:39 +0000 (09:16 +0000)
  minimal-responses features.

git-svn-id: file:///svn/unbound/trunk@2658 be551aaa-1e26-0410-a405-d3ace91eadb9

14 files changed:
doc/CREDITS
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
util/data/msgencode.c
util/net_help.c
util/net_help.h

index 13acf74beb0544ba88eedb658e873c06d8b0f3b3..429a799d6b0a58d10d7e16307377d040b9e4d35b 100644 (file)
@@ -18,3 +18,4 @@ cz.nic - sponsoring 'summer of code' development by Zdenek and Marek.
 Brett Carr - windows beta testing.
 Luca Bruno - patch for windows support in libunbound hosts and resolvconf().
 Tom Hendrikx - contributed split-itar.sh a useful script to 5011-track ITAR.
+Daisuke HIGASHI - patch for rrset-roundrobin and minimal-responses.
index 56798cca40511e6ac0caba6bb760cbe9e9bdd401..b82c4825578425302083776acf251d8f34d411c0 100644 (file)
@@ -1,3 +1,7 @@
+10 April 2012: Wouter
+       - Applied patch from Daisuke HIGASHI for rrset-roundrobin and
+         minimal-responses features.
+
 5 April 2012: Wouter
        - fix bug #443: --with-chroot-dir not honoured by configure.
        - fix bug #444: setusercontext was called too late (thanks Bjorn
index dc7ef0fc14dde80eb9b2a157d055b4855650baa2..f21a657d65b30ee8308647a3c48eb217a2934b2a 100644 (file)
@@ -309,6 +309,13 @@ server:
        # if yes, perform key lookups adjacent to normal lookups.
        # prefetch-key: no
 
+       # if yes, Unbound rotates RRSet order in response.
+       # rrset-roundrobin: no
+
+       # if yes, Unbound doesn't insert authority/additional sections
+       # into response messages when those sections are not required.
+       # minimal-responses: no
+
        # module configuration of the server. A string with identifiers
        # separated by spaces. "iterator" or "validator iterator"
        # module-config: "validator iterator"
index d815deed7562a0ac169cbcfdc803ac05e8d9cfbb..e9fa7f953e7044bfb40cc9d00d12831ccbbb44a7 100644 (file)
@@ -570,6 +570,18 @@ If yes, fetch the DNSKEYs earlier in the validation process, when a DS
 record is encountered.  This lowers the latency of requests.  It does use
 a little more CPU.  Also if the cache is set to 0, it is no use. Default is no.
 .TP
+.B rrset-roundrobin: \fI<yes or no>
+If yes, Unbound rotates RRSet order in response (the random number is taken
+from the query ID, for speed and thread safety).  Default is no.
+.TP
+.B minimal-responses: \fI<yes or no>
+If yes, Unbound doesn't insert authority/additional sections into response
+messages when those sections are not required.  This reduces response
+size significantly, and may avoid TCP fallback for some responses.
+This may cause a slight speedup.  The default is no, because the DNS
+protocol RFCs mandate these sections, and the additional content could
+be of use and save roundtrips for clients.
+.TP
 .B module\-config: \fI<"module names">
 Module configuration, a list of module names separated by spaces, surround
 the string with quotes (""). The modules can be validator, iterator.
index 19de9becb4e8653ad3520847ec49739a486ae2c8..8ba79d2a29ca63f2e3a0cb8c090ebe8a3caf1c57 100644 (file)
@@ -195,6 +195,8 @@ config_create(void)
        cfg->remote_control_enable = 0;
        cfg->control_ifs = NULL;
        cfg->control_port = UNBOUND_CONTROL_PORT;
+       cfg->minimal_responses = 0;
+       cfg->rrset_roundrobin = 0;
        if(!(cfg->server_key_file = strdup(RUN_DIR"/unbound_server.key"))) 
                goto error_exit;
        if(!(cfg->server_cert_file = strdup(RUN_DIR"/unbound_server.pem"))) 
@@ -399,6 +401,8 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_MEMSIZE("key-cache-size:", key_cache_size)
        else S_POW2("key-cache-slabs:", key_cache_slabs)
        else S_MEMSIZE("neg-cache-size:", neg_cache_size)
+       else S_YNO("minimal-responses:", minimal_responses)
+       else S_YNO("rrset-roundrobin:", rrset_roundrobin)
        else S_STRLIST("local-data:", local_data)
        else S_YNO("control-enable:", remote_control_enable)
        else S_STRLIST("control-interface:", control_ifs)
@@ -651,6 +655,8 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_LST(opt, "control-interface", control_ifs)
        else O_LST(opt, "domain-insecure", domain_insecure)
        else O_UNS(opt, "val-override-date", val_date_override)
+       else O_YNO(opt, "minimal-responses", minimal_responses)
+       else O_YNO(opt, "rrset-roundrobin", rrset_roundrobin)
        /* not here:
         * outgoing-permit, outgoing-avoid - have list of ports
         * local-zone - zones and nodefault variables
@@ -1079,6 +1085,8 @@ config_apply(struct config_file* config)
        MAX_TTL = (uint32_t)config->max_ttl;
        MIN_TTL = (uint32_t)config->min_ttl;
        EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size;
+       MINIMAL_RESPONSES = config->minimal_responses;
+       RRSET_ROUNDROBIN = config->rrset_roundrobin;
        log_set_time_asc(config->log_time_ascii);
 }
 
index 474b6e4b8a6e4f9fe824fab0d0ab48a7eb37c455..69595cb50f2e01c08c7fc30f30e16d95bfe6d233 100644 (file)
@@ -290,6 +290,12 @@ struct config_file {
 
        /** daemonize, i.e. fork into the background. */
        int do_daemonize;
+
+       /* minimal response when positive answer */
+       int minimal_responses;
+
+       /* RRSet roundrobin */
+       int rrset_roundrobin;
 };
 
 /**
index 9c490c0f5f9a1f0f30e1ffbe15c16e400fe12ca1..32eb81ec0afa4958c1ddadbc0914d82d8c992bd6 100644 (file)
@@ -362,8 +362,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 140
-#define YY_END_OF_BUFFER 141
+#define YY_NUM_RULES 142
+#define YY_END_OF_BUFFER 143
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -371,153 +371,156 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1315] =
+static yyconst flex_int16_t yy_accept[1343] =
     {   0,
-        1,    1,  122,  122,  126,  126,  130,  130,  134,  134,
-        1,    1,  141,  138,    1,  120,  120,  139,    2,  139,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  122,
-      123,  123,  124,  139,  126,  127,  127,  128,  139,  133,
-      130,  131,  131,  132,  139,  134,  135,  135,  136,  139,
-      137,  121,    2,  125,  139,  137,  138,    0,    1,    2,
-        2,    2,    2,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  122,    0,
-      126,    0,  133,    0,  130,  134,    0,  137,    0,    2,
-        2,  137,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  137,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  137,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,   62,  138,  138,  138,  138,  138,    6,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      137,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  137,
-
-      138,  138,  138,  138,   27,  138,  138,  138,  138,  138,
-       12,   13,  138,   15,   14,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  118,
-      138,  138,  138,  138,    3,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  137,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  129,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,   30,  138,  138,  138,  138,  138,  138,  138,
-       31,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,   77,  129,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,   76,  138,
-
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-       60,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,   20,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,   28,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,   29,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,   22,  138,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,   25,
-       26,  138,  138,  138,   63,  138,   64,  138,   61,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,    5,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,   79,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  104,  103,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,   32,  138,  138,  138,  138,  138,  138,
-       66,   65,  138,  138,  138,  138,  138,  138,  100,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,   51,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  102,  138,  138,  138,
-      138,  138,  138,  138,    4,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,  138,  138,   97,  138,  138,  138,  138,
-      138,  138,  138,  112,   98,  138,   21,  138,  138,  138,
-      138,   68,  138,   69,   67,  138,  138,  138,  138,  138,
-      138,   75,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,   99,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,   59,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,   17,  138,  138,  138,
-       16,  138,   84,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,   39,   40,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,   70,  138,  138,
-
-      138,  138,  138,   74,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,   78,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  117,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,   88,  138,   92,  138,  138,  138,
-      138,   73,  138,  138,  110,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,   91,  138,
-      138,  138,  138,   41,   42,  138,   47,   93,  138,  105,
-      101,  138,   35,  138,   95,  138,  138,  138,  138,  138,
-        7,  138,   58,  109,  138,  138,  138,  138,  138,  138,
-
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,   80,  138,  138,
-      119,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,   94,   34,   36,  138,  138,  138,  138,
-      138,   57,  138,  138,  138,  113,   18,   19,  138,  138,
-      138,  138,  138,  138,   55,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  115,  138,  138,   33,  138,  138,
-      138,  138,  138,  138,   11,  138,  138,  138,  138,  138,
-      138,   10,  138,  138,   37,  138,  114,  138,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,   87,   86,  138,
-
-      116,  111,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,   43,  138,  138,  138,  138,  138,   38,  138,
-      138,  138,   81,   83,  138,  138,  138,   85,  138,  138,
-      138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,   23,  138,  138,  138,  138,  138,  138,  138,
-      138,  138,  138,  138,  138,  108,  138,  138,  138,  138,
-      138,  138,  138,   24,  138,    9,  138,  138,  106,   48,
-      138,  138,  138,   90,  138,   71,  138,  138,  138,   50,
-       54,   49,  138,   44,  138,    8,  138,  138,   89,  138,
-      138,  138,   53,  138,   45,  138,  107,  138,  138,   82,
-
-       72,   52,   46,  138,  138,  138,  138,   56,  138,  138,
-      138,  138,   96,    0
+        1,    1,  124,  124,  128,  128,  132,  132,  136,  136,
+        1,    1,  143,  140,    1,  122,  122,  141,    2,  141,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  124,
+      125,  125,  126,  141,  128,  129,  129,  130,  141,  135,
+      132,  133,  133,  134,  141,  136,  137,  137,  138,  141,
+      139,  123,    2,  127,  141,  139,  140,    0,    1,    2,
+        2,    2,    2,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  124,
+        0,  128,    0,  135,    0,  132,  136,    0,  139,    0,
+        2,    2,  139,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  139,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  139,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,   62,  140,  140,
+      140,  140,  140,    6,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  139,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  139,  140,  140,  140,  140,   27,
+      140,  140,  140,  140,  140,   12,   13,  140,   15,   14,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  118,  140,  140,  140,  140,
+      140,    3,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      139,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  131,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,   30,
+      140,  140,  140,  140,  140,  140,  140,  140,   31,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,   77,  131,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,   76,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+       60,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,   20,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,   28,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,   29,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,   22,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,   25,   26,  140,  140,  140,   63,  140,   64,
+      140,   61,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,    5,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,   79,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  104,  103,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,   32,  140,  140,
+      140,  140,  140,  140,  140,   66,   65,  140,  140,  140,
+      140,  140,  140,  100,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,   51,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  102,  140,  140,  140,  140,  140,  140,  140,  140,
+        4,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,   97,  140,  140,  140,  140,  140,  140,  140,
+      112,   98,  140,   21,  140,  140,  140,  140,   68,  140,
+       69,   67,  140,  140,  140,  140,  140,  140,   75,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,   99,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,   59,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,   17,  140,  140,  140,   16,
+      140,   84,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,   39,   40,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,   70,  140,  140,  140,
+      140,  140,   74,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,   78,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  117,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,   88,  140,   92,  140,  140,
+      140,  140,   73,  140,  140,  110,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,   91,
+      140,  140,  140,  140,   41,   42,  140,   47,   93,  140,
+
+      105,  101,  140,  140,   35,  140,   95,  140,  140,  140,
+      140,  140,    7,  140,   58,  109,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+       80,  140,  140,  119,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,   94,  140,   34,   36,
+      140,  140,  140,  140,  140,   57,  140,  140,  140,  140,
+      113,   18,   19,  140,  140,  140,  140,  140,  140,   55,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  115,
+      140,  140,   33,  140,  140,  140,  140,  140,  140,   11,
+
+      140,  140,  140,  140,  140,  140,  140,   10,  140,  140,
+       37,  140,  121,  114,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,   87,   86,  140,  116,  111,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,   43,
+      140,  120,  140,  140,  140,  140,   38,  140,  140,  140,
+       81,   83,  140,  140,  140,   85,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+       23,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  108,  140,  140,  140,  140,  140,  140,
+      140,   24,  140,    9,  140,  140,  106,   48,  140,  140,
+
+      140,   90,  140,   71,  140,  140,  140,   50,   54,   49,
+      140,   44,  140,    8,  140,  140,   89,  140,  140,  140,
+       53,  140,   45,  140,  107,  140,  140,   82,   72,   52,
+       46,  140,  140,  140,  140,   56,  140,  140,  140,  140,
+       96,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -560,604 +563,617 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1329] =
+static yyconst flex_int16_t yy_base[1357] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2523, 2509,   50, 2623, 2623, 2623,  129,   94,
+       87,  108, 2577, 2563,   50, 2683, 2683, 2683,  129,   94,
        70,  104,  122,   90,   92,  115,  126,   95,   84,  132,
-      135,  138,   50,  142,  148,  156,  169,  164,  144, 2508,
-     2623, 2623, 2623,   70, 2507, 2623, 2623, 2623,   42, 2506,
-     2516, 2623, 2623, 2623,  188, 2504, 2623, 2623, 2623,  182,
-     2436, 2623,  197, 2623,  201,  111, 2269,  207,  120,    0,
-      218,    0,    0,  103,  158,  165,  152,  184,  194,  203,
-      204,  146,  216,  200,  205,  213,  219,  220,  136,  221,
-      227,  223,  234,  238,  228,  236,  240,  244,  248,  226,
-
-      250,  249,  255,  252,  256,  258,  257,  262,  268,  265,
-      270,  266,  274,  275,   49,  278,  281,  279, 2196,  294,
-      939,  298,  804,  309,  783,  397,  296,  357,  313,  317,
-        0,  310,  294,  319,  312,  315,  316,  318,  325,  321,
-      329,  339,  332,  322,  330,  328,  336,  337,  344,  334,
-      350,  345,  347,  346,  354,  361,  367,  369,  355,  377,
-      373,  379,  385,  381,  383,  371,  384,  382,  386,  387,
-      392,  393,  395,  396,  405,  399,  401,  406,  416,  407,
-      408,  423,  425,  427,  410,  421,  424,  433,  430,  434,
-      436,  431,  442,  437,  443,  447,  450,  448,  452,  453,
-
-      460,  457,  458,  461,  469,  467,  468,  470,  282,  472,
-      474,  476,  480,  478,  477,  479,  484,  482,  495,  501,
-      502,  490,  503,  504,  509,  506,  514,  512,  516,  522,
-      519,  520,  521,  523,  526,  529,  533,  530,  531,  534,
-      532,  540,  541,  560,  549,  544,  548,  551,  550,  557,
-      561,  558,  566,  567,  568,  571,  584,  593,  580,  583,
-      586,  573,  483,  592,  594,  595,  597,  598,  603,  601,
-      604,  615,  611,  616,  614,  622,  625,  618,  624,  626,
-      629,  628,  630, 2623,  635,  632,  637,  641,  640, 2623,
-      642,  643,  644,  646,  647,  659,  648,  656,  657,  660,
-
-      664,  665,  667,  687,  670,  668,  677,  671,  673,  676,
-      679,  683,  685,  689,  692,  694,  700,  699,  696,  702,
-      706,  712,  709,  714,  718,  720,  722,  723,  724,  725,
-      727,  730,  737,  738,  742,  744,  750,  726,  746,  748,
-      754,  753,  755,  756,  763,  759,  761,  762,  766,  773,
-      769,  777,  779,  781,  771,  782,  790,  788,  789,  793,
-      795,  791,  797,  798,  799,  801,  813,  815,  807,  814,
-      823,  819,  824,  820,  825,  827,  828,  829,  830,  832,
-      831,  835,  841,  834,  844,  851,  837,  840,  852,  854,
-      857,  858,  859,  860,  868,  861,  862,  872,  870,  875,
-
-      874,  878,  876,  885, 2623,  888,  887,  889,  890,  893,
-     2623, 2623,  892, 2623, 2623,  895,  896,  899,  905,  910,
-      901,  913,  911,  915,  920,  916,  924,  926,  932,  927,
-      934,  921,  935,  937,  942,  944,  945,  947,  948,  949,
-      952,  953,  956,  958,  959,  965,  967,  973,  969, 2623,
-      976,  970,  971,  978, 2623,  977,  980,  982,  983,  986,
-      985,  987,  990,  992,  995,  993,  997,  996,  999, 1014,
-     1015, 1010, 1000, 1017, 1018, 1020, 1028, 1024, 1025, 1031,
-     1035, 1026, 1033, 1037, 1034, 1038, 1040, 1041, 1047, 1066,
-     1048, 1045, 1053, 1050, 1051, 1060, 1056, 1063, 1078, 1076,
-
-     1073, 1055, 1088, 1080, 1083, 1092, 1090, 1094, 1095, 2623,
-     1101, 1054, 1097, 1098, 1100, 1103, 1102, 1108, 1107, 1110,
-     1114, 1120, 2623, 1117, 1125, 1126, 1128, 1129, 1118, 1139,
-     2623, 1141, 1142, 1144, 1122, 1135, 1145, 1149, 1151, 1152,
-     1153, 1161, 1157, 1150, 1162, 1163, 1164, 1167, 1169, 1170,
-     1171, 1172, 1174, 1173, 1185, 1191, 1178, 1189, 1179, 1192,
-     1195, 1200, 1194, 1199, 1197, 1201, 2623,  181, 1203, 1204,
-     1202, 1210, 1214, 1213, 1211, 1215, 1223, 1220, 1221, 1231,
-     1224, 1232, 1233, 1227, 1234, 1237, 1240, 1243, 1245, 1247,
-     1249, 1248, 1250, 1251, 1253, 1255, 1254, 1257, 2623, 1263,
-
-     1264, 1265, 1268, 1272, 1280, 1276, 1281, 1287, 1283, 1286,
-     1292, 1293, 1285, 1295, 1301, 1303, 1300, 1302, 1307, 1304,
-     2623, 1308, 1309, 1310, 1317, 1311, 1314, 1318, 1319, 1327,
-     1333, 2623, 1334, 1335, 1320, 1342, 1329, 1346, 1338, 1348,
-     1350, 1351, 1352, 1353, 1354, 1355, 1357, 2623, 1367, 1368,
-     1366, 1374, 1373, 1359, 1365, 1380, 1375, 1377, 1386, 1383,
-     1384, 1387, 1388, 1390, 1391, 1393, 1385, 2623, 1397, 1394,
-     1399, 1401, 1407, 1398, 1409, 1412, 1402, 1414, 1419, 1422,
-     1424, 1426, 1427, 1431, 1435, 1423, 1436, 1437, 1440, 1448,
-     1451, 1452, 2623, 1450, 1447, 1454, 1464, 1457, 1460, 1462,
-
-     1465, 1472, 1466, 1468, 1469, 1470, 1476, 1474, 1477, 1482,
-     1475, 1493, 1478, 1494, 1484, 1499, 1496, 1486, 1505, 2623,
-     2623, 1502, 1508, 1515, 2623, 1512, 2623, 1514, 2623, 1516,
-     1517, 1520, 1521, 1522, 1523, 1525, 1528, 1529, 1531, 1526,
-     1532, 1533, 1534, 2623, 1540, 1541, 1542, 1544, 1545, 1547,
-     1549, 1554, 1561, 1550, 1557, 1560, 2623, 1563, 1562, 1569,
-     1578, 1574, 1576, 1577, 1579, 1580, 1581, 1583, 1590, 1586,
-     1582, 1592, 1593, 1584, 1595, 1597, 1606, 1602, 1603, 1605,
-     1609, 1608, 1616, 1611, 2623, 2623, 1618, 1629, 1621, 1614,
-     1631, 1635, 1639, 1620, 1636, 1637, 1641, 1638, 1642, 1645,
-
-     1646, 1648, 1651, 2623, 1654, 1658, 1655, 1662, 1660, 1665,
-     2623, 2623, 1670, 1666, 1671, 1672, 1676, 1675, 2623, 1677,
-     1680, 1681, 1682, 1683, 1685, 1690, 1695, 1699, 1700, 1696,
-     1703, 1706, 1704, 1702, 1705, 1718, 1722, 1719, 1724, 1712,
-     1709, 1725, 1726, 1732, 1727, 1734, 1736, 1742, 1738, 2623,
-     1745, 1739, 1748, 1729, 1750, 1751, 1758, 1755, 1756, 1759,
-     1760, 1761, 1763, 1764, 1765, 1768, 2623, 1772, 1770, 1775,
-     1771, 1785, 1773, 1778, 2623, 1787, 1796, 1783, 1793, 1802,
-     1804, 1789, 1795, 1805, 1806, 1807, 1808, 1810, 1812, 1814,
-     1816, 1823, 1828, 1834, 1824, 1831, 1837, 1836, 1838, 1839,
-
-     1822, 1845, 1841, 1849, 1846, 2623, 1850, 1855, 1857, 1859,
-     1861, 1862, 1860, 2623, 2623, 1852, 2623, 1870, 1867, 1872,
-     1874, 2623, 1876, 2623, 2623, 1873, 1884, 1877, 1888, 1878,
-     1891, 2623, 1886, 1892, 1895, 1897, 1898, 1899, 1901, 1900,
-     1902, 2623, 1903, 1904, 1905, 1907, 1920, 1909, 1921, 1925,
-     1924, 1928, 1914, 1917, 1936, 1934, 2623, 1930, 1938, 1941,
-     1942, 1944, 1946, 1945, 1943, 1958, 2623, 1947, 1950, 1951,
-     2623, 1959, 2623, 1962, 1961, 1964, 1972, 1966, 1977, 1969,
-     1974, 1979, 1980, 1982, 1983, 2623, 2623, 1985, 1990, 1995,
-     1987, 1992, 1998, 2000, 2001, 2003, 2004, 2623, 1415, 2005,
-
-     2007, 2008, 2009, 2623, 2011, 2013, 2012, 2014, 2017, 2022,
-     2032, 2026, 2034, 2036, 2019, 2041, 2043, 2623, 2044, 2046,
-     2037, 2048, 2050, 2051, 2052, 2053, 2059, 2060, 2062, 2623,
-     2064, 2065, 2066, 2070, 2071, 2072, 2073, 2074, 2075, 2077,
-     2078, 2081, 2088, 2085, 2623, 2084, 2623, 2093, 2098, 2101,
-     2105, 2623, 2094, 2100, 2623, 2107, 2103, 2116, 2113, 2118,
-     2120, 2122, 2111, 2124, 2123, 2125, 2134, 2126, 2623, 2133,
-     2135, 2136, 2137, 2623, 2623, 2141, 2623, 2623, 2146, 2623,
-     2623, 2148, 2623, 2151, 2623, 2157, 2153, 2155, 2138, 2156,
-     2623, 2159, 2623, 2623, 2162, 2163, 2164, 2173, 2175, 2177,
-
-     2166, 2168, 2170, 2179, 2180, 2181, 2184, 2185, 2187, 2188,
-     2189, 2190, 2193, 2197, 2195, 2198, 2205, 2623, 2199, 2209,
-     2623, 2212, 2216, 2206, 2218, 2219, 2222, 2220, 2224, 2231,
-     2227, 2228, 2229, 2623, 2623, 2623, 2230, 2232, 2234, 2240,
-     2241, 2623, 2244, 2245, 2252, 2623, 2623, 2623, 2253, 2246,
-     2248, 2256, 2258, 2262, 2623, 2260, 2266, 2267, 2265, 2274,
-     2277, 2283, 2282, 2285, 2623, 2286, 2287, 2623, 2289, 2288,
-     2293, 2294, 2295, 2297, 2623, 2279, 2290, 2305, 2307, 2300,
-     2310, 2623, 2311, 2312, 2623, 2314, 2623, 2317, 2318, 2321,
-     2323, 2327, 2328, 2329, 2335, 2332, 2334, 2623, 2623, 2333,
-
-     2623, 2623, 2336, 2340, 2341, 2344, 2342, 2347, 2349, 2350,
-     2353, 2351, 2623, 2354, 2356, 2364, 2361, 2359, 2623, 2366,
-     2367, 2370, 2623, 2623, 2372, 2380, 2373, 2623, 2378, 2384,
-     2385, 2386, 2388, 2389, 2390, 2391, 2392, 2394, 2396, 2397,
-     2403, 2407, 2623, 2409, 2405, 2411, 2414, 2418, 2415, 2419,
-     2420, 2424, 2426, 2428, 2429, 2623, 2421, 2432, 2442, 2444,
-     2446, 2447, 2450, 2623, 2453, 2623, 2456, 2457, 2623, 2623,
-     2451, 2461, 2458, 2623, 2464, 2623, 2465, 2467, 2468, 2623,
-     2623, 2623, 2471, 2623, 2473, 2623, 2475, 2476, 2623, 2478,
-     2480, 2482, 2623, 2484, 2623, 2487, 2623, 2488, 2489, 2623,
-
-     2623, 2623, 2623, 2493, 2492, 2495, 2430, 2623, 2498, 2501,
-     2499, 2503, 2623, 2623, 2531, 2538, 2545, 2552, 2559,   94,
-     2566, 2573, 2580, 2587, 2594, 2601, 2608, 2615
+      135,  138,   50,  142,  148,  156,  169,  164,  179, 2493,
+     2683, 2683, 2683,   70, 2371, 2683, 2683, 2683,   42, 2326,
+     1987, 2683, 2683, 2683,  197, 1681, 2683, 2683, 2683,  154,
+     1191, 2683,  201, 2683,  205,  111, 1082,  211,  120,    0,
+      222,    0,    0,  103,  158,  165,  149,  155,  168,  206,
+      207,  198,  217,  209,  204,  208,  215,  177,  136,  227,
+      228,  219,  232,  236,  235,  240,  245,  229,  246,  247,
+
+      250,  251,  254,  256,  258,  262,  259,  263,  266,  269,
+      267,  276,  268,  271,  273,   49,  280,  281,  283,  853,
+      297,  751,  301,  603,  311,  572,  360,  299,  298,  315,
+      319,    0,  296,  312,  320,  314,  316,  318,  321,  327,
+      323,  330,  342,  331,  326,  334,  335,  336,  338,  347,
+      337,  353,  348,  344,  350,  355,  359,  372,  369,  367,
+      357,  379,  377,  385,  386,  383,  387,  384,  388,  389,
+      391,  392,  395,  396,  397,  398,  405,  402,  406,  403,
+      414,  412,  420,  418,  428,  424,  425,  427,  430,  434,
+      435,  432,  433,  441,  439,  444,  452,  448,  450,  454,
+
+      455,  458,  461,  460,  462,  466,  473,  469,  470,  472,
+      477,  475,  478,  479,  485,  481,  482,  483,  486,  492,
+      487,  504,  498,  508,  501,  502,  510,  513,  509,  515,
+      520,  522,  528,  524,  525,  526,  527,  531,  534,  537,
+      533,  536,  539,  540,  545,  546,  565,  551,  549,  553,
+      556,  555,  562,  576,  563,  572,  573,  569,  578,  585,
+      596,  586,  591,  595,  598,  597,  600,  601,  602,  605,
+      608,  610,  609,  620,  623,  622,  621,  624,  630,  638,
+      625,  632,  635,  639,  643,  634,  644, 2683,  649,  636,
+      651,  652,  642, 2683,  653,  656,  658,  660,  662,  668,
+
+      664,  666,  667,  669,  674,  675,  677,  697,  680,  678,
+      690,  681,  686,  683,  692,  689,  699,  702,  706,  707,
+      709,  710,  712,  715,  716,  726,  722,  718,  724,  728,
+      732,  733,  735,  738,  739,  743,  747,  753,  755,  757,
+      763,  740,  759,  762,  765,  767,  768,  749,  775,  772,
+      774,  778,  779,  787,  776,  789,  791,  793,  783,  794,
+      797,  805,  801,  803,  808,  810,  784,  804,  814,  813,
+      820,  827,  828,  812,  829,  835,  831,  836,  824,  837,
+      839,  840,  841,  843,  844,  846,  848,  854,  850,  856,
+      861,  862,  866,  851,  868,  871,  872,  873,  874,  883,
+
+      875,  884,  876,  886,  887,  894,  895,  889,  902, 2683,
+      901,  904,  898,  905,  906, 2683, 2683,  890, 2683, 2683,
+      909,  914,  915,  917,  922,  923,  925,  927,  930,  932,
+      935,  936,  938,  944,  946,  939,  947,  948,  950,  954,
+      955,  957,  961,  963,  964,  965,  968,  970,  972,  974,
+      975,  981,  977,  988,  984, 2683,  986,  987,  991,  993,
+      994, 2683,  995,  996,  998,  999, 1000, 1002, 1006, 1004,
+     1007, 1014, 1013, 1009, 1012, 1019, 1029, 1030, 1025, 1028,
+     1031, 1035, 1037, 1046, 1039, 1043, 1045, 1052, 1048, 1050,
+     1054, 1051, 1055, 1057, 1060, 1063, 1085, 1065, 1062, 1064,
+
+     1067, 1070, 1072, 1074, 1078, 1092, 1097, 1075, 1071, 1103,
+     1105, 1099, 1095, 1106, 1112, 1113, 2683, 1119, 1120, 1108,
+     1115, 1116, 1122, 1124, 1129, 1126, 1130, 1132, 1138, 2683,
+     1135, 1136, 1137, 1140, 1147, 1139, 1149, 1159, 2683, 1161,
+     1162, 1155, 1157, 1164, 1165, 1167, 1169, 1170, 1171, 1173,
+     1181, 1176, 1178, 1183, 1182, 1187, 1189, 1190, 1192, 1193,
+     1194, 1199, 1204, 1210, 1213, 1201, 1218, 1195, 1207, 1211,
+     1224, 1219, 1222, 1225, 1226, 2683,  174, 1227, 1228, 1229,
+     1235, 1238, 1234, 1232, 1236, 1240, 1242, 1247, 1253, 1248,
+     1254, 1255, 1256, 1259, 1258, 1261, 1267, 1268, 1269, 1270,
+
+     1271, 1272, 1273, 1274, 1279, 1278, 1286, 2683, 1292, 1285,
+     1281, 1288, 1296, 1305, 1297, 1302, 1312, 1313, 1315, 1316,
+     1317, 1319, 1309, 1322, 1330, 1331, 1327, 1329, 1328, 1334,
+     2683, 1335, 1336, 1338, 1341, 1343, 1349, 1347, 1348, 1350,
+     1353, 1359, 2683, 1303, 1360, 1354, 1364, 1367, 1369, 1371,
+     1378, 1370, 1374, 1372, 1381, 1382, 1383, 1384, 2683, 1393,
+     1397, 1394, 1401, 1395, 1398, 1402, 1406, 1403, 1385, 1412,
+     1409, 1410, 1414, 1415, 1411, 1418, 1419, 1421, 2683, 1425,
+     1422, 1427, 1428, 1434, 1426, 1435, 1436, 1438, 1441, 1447,
+     1440, 1451, 1442, 1453, 1450, 1460, 1461, 1464, 1463, 1466,
+
+     1472, 1478, 1474, 2683, 1477, 1465, 1480, 1486, 1488, 1483,
+     1489, 1490, 1491, 1498, 1492, 1494, 1495, 1496, 1503, 1500,
+     1501, 1504, 1507, 1506, 1518, 1519, 1520, 1523, 1524, 1526,
+     1525, 1532, 2683, 2683, 1533, 1534, 1541, 2683, 1543, 2683,
+     1547, 2683, 1548, 1549, 1537, 1539, 1553, 1544, 1555, 1556,
+     1560, 1557, 1562, 1563, 1565, 1566, 2683, 1568, 1569, 1574,
+     1570, 1572, 1577, 1578, 1582, 1593, 1581, 1585, 1589, 2683,
+     1591, 1594, 1600, 1607, 1604, 1598, 1606, 1608, 1609, 1610,
+     1612, 1621, 1613, 1611, 1615, 1622, 1623, 1624, 1626, 1632,
+     1630, 1631, 1634, 1638, 1640, 1645, 1643, 2683, 2683, 1649,
+
+     1641, 1646, 1652, 1656, 1658, 1660, 1668, 1665, 1666, 1671,
+     1672, 1673, 1674, 1676, 1677, 1679, 1680, 2683, 1688, 1682,
+     1696, 1697, 1706, 1689, 1704, 2683, 2683, 1685, 1692, 1708,
+     1709, 1711, 1712, 2683, 1714, 1715, 1716, 1717, 1718, 1720,
+     1710, 1724, 1732, 1735, 1725, 1736, 1743, 1740, 1741, 1744,
+     1746, 1754, 1742, 1756, 1762, 1747, 1758, 1760, 1764, 1761,
+     1766, 1770, 1772, 1771, 2683, 1778, 1775, 1784, 1776, 1783,
+     1785, 1792, 1788, 1789, 1790, 1791, 1794, 1796, 1797, 1798,
+     1804, 2683, 1803, 1805, 1806, 1808, 1814, 1818, 1816, 1821,
+     2683, 1822, 1830, 1826, 1828, 1832, 1829, 1836, 1833, 1839,
+
+     1838, 1841, 1843, 1850, 1844, 1848, 1851, 1852, 1863, 1862,
+     1869, 1870, 1867, 1876, 1873, 1874, 1875, 1877, 1886, 1882,
+     1888, 1880, 2683, 1890, 1895, 1897, 1899, 1884, 1900, 1898,
+     2683, 2683, 1891, 2683, 1908, 1901, 1912, 1913, 2683, 1911,
+     2683, 2683, 1914, 1923, 1915, 1916, 1924, 1930, 2683, 1927,
+     1925, 1935, 1931, 1937, 1938, 1939, 1933, 1940, 2683, 1941,
+     1942, 1943, 1947, 1953, 1955, 1957, 1958, 1962, 1965, 1966,
+     1959, 1968, 1974, 1973, 2683, 1972, 1975, 1980, 1981, 1985,
+     1982, 1986, 1987, 1996, 1998, 2683, 1992, 1990, 2000, 2683,
+     2002, 2683, 2006, 2004, 2009, 2014, 2011, 2022, 2007, 2015,
+
+     2023, 2017, 2025, 2027, 2683, 2683, 2031, 2033, 2036, 2034,
+     2038, 2041, 2039, 2042, 2044, 2048, 2683, 2049, 2050, 2051,
+     2052, 2053, 2683, 2056, 2057, 2058, 2062, 2065, 2077, 2079,
+     2068, 2083, 2085, 2061, 2087, 2089, 2090, 2683, 2091, 2093,
+     2094, 2098, 2099, 2095, 2100, 2104, 2107, 2102, 2111, 2683,
+     2115, 2108, 2118, 2116, 2112, 2122, 2123, 2126, 2128, 2130,
+     2129, 2131, 2132, 2138, 2059, 2683, 2136, 2683, 2137, 2142,
+     2150, 2151, 2683, 2147, 2153, 2683, 2154, 2158, 2167, 2155,
+     2161, 2169, 2170, 2171, 2172, 2173, 2174, 2182, 2178, 2683,
+     2180, 2181, 2187, 2183, 2683, 2683, 2188, 2683, 2683, 2198,
+
+     2683, 2683, 2194, 2201, 2683, 2203, 2683, 2209, 2205, 2192,
+     2190, 2210, 2683, 2214, 2683, 2683, 2211, 2217, 2207, 2218,
+     2225, 2227, 2229, 2220, 2222, 2230, 2231, 2233, 2234, 2236,
+     2237, 2238, 2239, 2244, 2241, 2247, 2248, 2250, 2251, 2253,
+     2683, 2249, 2262, 2683, 2269, 2270, 2258, 2260, 2271, 2272,
+     2274, 2276, 2282, 2280, 2281, 2283, 2683, 2285, 2683, 2683,
+     2286, 2284, 2291, 2292, 2294, 2683, 2297, 2298, 2302, 2309,
+     2683, 2683, 2683, 2310, 2299, 2305, 2313, 2315, 2316, 2683,
+     2319, 2322, 2323, 2325, 2330, 2332, 2338, 2336, 2342, 2683,
+     2339, 2337, 2683, 2343, 2345, 2347, 2348, 2350, 2352, 2683,
+
+     2353, 2354, 2360, 2355, 2363, 2366, 2365, 2683, 2367, 2368,
+     2683, 2378, 2683, 2683, 2369, 2379, 2382, 2384, 2387, 2375,
+     2388, 2395, 2392, 2394, 2683, 2683, 2397, 2683, 2683, 2396,
+     2399, 2400, 2404, 2401, 2406, 2408, 2409, 2412, 2410, 2683,
+     2413, 2683, 2414, 2423, 2420, 2418, 2683, 2425, 2426, 2429,
+     2683, 2683, 2431, 2439, 2433, 2683, 2441, 2443, 2437, 2444,
+     2448, 2449, 2445, 2450, 2455, 2457, 2451, 2453, 2465, 2466,
+     2683, 2468, 2460, 2470, 2474, 2476, 2478, 2479, 2481, 2483,
+     2484, 2486, 2487, 2683, 2488, 2489, 2499, 2504, 2508, 2490,
+     2510, 2683, 2511, 2683, 2514, 2500, 2683, 2683, 2515, 2517,
+
+     2519, 2683, 2520, 2683, 2518, 2522, 2526, 2683, 2683, 2683,
+     2528, 2683, 2529, 2683, 2532, 2534, 2683, 2535, 2537, 2540,
+     2683, 2542, 2683, 2544, 2683, 2545, 2546, 2683, 2683, 2683,
+     2683, 2548, 2550, 2555, 2551, 2683, 2556, 2558, 2559, 2562,
+     2683, 2683, 2591, 2598, 2605, 2612, 2619,   94, 2626, 2633,
+     2640, 2647, 2654, 2661, 2668, 2675
     } ;
 
-static yyconst flex_int16_t yy_def[1329] =
+static yyconst flex_int16_t yy_def[1357] =
     {   0,
-     1314,    1, 1315, 1315, 1316, 1316, 1317, 1317, 1318, 1318,
-     1319, 1319, 1314, 1320, 1314, 1314, 1314, 1314, 1321, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1322,
-     1314, 1314, 1314, 1322, 1323, 1314, 1314, 1314, 1323, 1324,
-     1314, 1314, 1314, 1314, 1324, 1325, 1314, 1314, 1314, 1325,
-     1326, 1314, 1327, 1314, 1326, 1326, 1320, 1320, 1314, 1328,
-     1321, 1328, 1321, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1322, 1322,
-     1323, 1323, 1324, 1324, 1314, 1325, 1325, 1326, 1326, 1327,
-     1327, 1326, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1326, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1326, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1314,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1326, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1326,
-
-     1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320,
-     1314, 1314, 1320, 1314, 1314, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314,
-     1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1326, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1314, 1326, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314,
-     1314, 1320, 1320, 1320, 1314, 1320, 1314, 1320, 1314, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1314, 1314, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320,
-     1314, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1314, 1314, 1320, 1314, 1320, 1320, 1320,
-     1320, 1314, 1320, 1314, 1314, 1320, 1320, 1320, 1320, 1320,
-     1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320,
-     1314, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1314, 1314, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320,
-
-     1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1314, 1320, 1314, 1320, 1320, 1320,
-     1320, 1314, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320,
-     1320, 1320, 1320, 1314, 1314, 1320, 1314, 1314, 1320, 1314,
-     1314, 1320, 1314, 1320, 1314, 1320, 1320, 1320, 1320, 1320,
-     1314, 1320, 1314, 1314, 1320, 1320, 1320, 1320, 1320, 1320,
-
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320,
-     1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1314, 1314, 1314, 1320, 1320, 1320, 1320,
-     1320, 1314, 1320, 1320, 1320, 1314, 1314, 1314, 1320, 1320,
-     1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1314, 1320, 1320, 1314, 1320, 1320,
-     1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320,
-     1320, 1314, 1320, 1320, 1314, 1320, 1314, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1314, 1314, 1320,
-
-     1314, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1314, 1320,
-     1320, 1320, 1314, 1314, 1320, 1320, 1320, 1314, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1320, 1320, 1314, 1320, 1320, 1320, 1320,
-     1320, 1320, 1320, 1314, 1320, 1314, 1320, 1320, 1314, 1314,
-     1320, 1320, 1320, 1314, 1320, 1314, 1320, 1320, 1320, 1314,
-     1314, 1314, 1320, 1314, 1320, 1314, 1320, 1320, 1314, 1320,
-     1320, 1320, 1314, 1320, 1314, 1320, 1314, 1320, 1320, 1314,
-
-     1314, 1314, 1314, 1320, 1320, 1320, 1320, 1314, 1320, 1320,
-     1320, 1320, 1314,    0, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314
+     1342,    1, 1343, 1343, 1344, 1344, 1345, 1345, 1346, 1346,
+     1347, 1347, 1342, 1348, 1342, 1342, 1342, 1342, 1349, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1350,
+     1342, 1342, 1342, 1350, 1351, 1342, 1342, 1342, 1351, 1352,
+     1342, 1342, 1342, 1342, 1352, 1353, 1342, 1342, 1342, 1353,
+     1354, 1342, 1355, 1342, 1354, 1354, 1348, 1348, 1342, 1356,
+     1349, 1356, 1349, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1350,
+     1350, 1351, 1351, 1352, 1352, 1342, 1353, 1353, 1354, 1354,
+     1355, 1355, 1354, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1354, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1354,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348,
+     1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1354, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1354, 1348, 1348, 1348, 1348, 1342,
+     1348, 1348, 1348, 1348, 1348, 1342, 1342, 1348, 1342, 1342,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348,
+     1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1354, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1342, 1354, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1342, 1342, 1348, 1348, 1348, 1342, 1348, 1342,
+     1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1342, 1348,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1342, 1342, 1348, 1348, 1348,
+     1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1342, 1342, 1348, 1342, 1348, 1348, 1348, 1348, 1342, 1348,
+     1342, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348, 1342,
+     1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+
+     1348, 1348, 1348, 1348, 1342, 1342, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348,
+     1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1342, 1348, 1342, 1348, 1348,
+     1348, 1348, 1342, 1348, 1348, 1342, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+     1348, 1348, 1348, 1348, 1342, 1342, 1348, 1342, 1342, 1348,
+
+     1342, 1342, 1348, 1348, 1342, 1348, 1342, 1348, 1348, 1348,
+     1348, 1348, 1342, 1348, 1342, 1342, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1342, 1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1342, 1342,
+     1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348,
+     1342, 1342, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+     1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342, 1348, 1348,
+     1342, 1348, 1342, 1342, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1342, 1342, 1348, 1342, 1342, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1342,
+     1348, 1342, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348,
+     1342, 1342, 1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1342, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348, 1348, 1348,
+     1348, 1342, 1348, 1342, 1348, 1348, 1342, 1342, 1348, 1348,
+
+     1348, 1342, 1348, 1342, 1348, 1348, 1348, 1342, 1342, 1342,
+     1348, 1342, 1348, 1342, 1348, 1348, 1342, 1348, 1348, 1348,
+     1342, 1348, 1342, 1348, 1342, 1348, 1348, 1342, 1342, 1342,
+     1342, 1348, 1348, 1348, 1348, 1342, 1348, 1348, 1348, 1348,
+     1342,    0, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342
     } ;
 
-static yyconst flex_int16_t yy_nxt[2663] =
+static yyconst flex_int16_t yy_nxt[2723] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
        26,   27,   28,   29,   30,   31,   32,   33,   34,   14,
        35,   36,   37,   38,   39,   14,   14,   14,   14,   41,
-       42,   43,   41,   42,   43,  121,   46,   47,  121,   44,
+       42,   43,   41,   42,   43,  122,   46,   47,  122,   44,
        48,   69,   44,   46,   47,   70,   49,   48,   57,   58,
        59,   68,   68,   49,   51,   52,   53,   54,   60,   18,
-       57,   58,   59,  119,  119,   55,   51,   52,   53,   54,
-       60,   18,   68,  100,  181,   74,   75,   55,   15,   16,
+       57,   58,   59,  120,  120,   55,   51,   52,   53,   54,
+       60,   18,   68,  101,  183,   74,   75,   55,   15,   16,
        17,   62,   63,   64,   67,   67,   68,   67,   67,   65,
 
        67,   93,   68,   76,   68,   67,   84,   68,   66,   15,
-       16,   17,   62,   63,   64,   68,   68,   77,  133,   86,
-       65,   69,   92,  129,   78,   70,   85,   68,   87,   66,
-       72,   79,   72,   72,   68,   72,   88,  132,   68,   80,
+       16,   17,   62,   63,   64,   68,   68,   77,  134,   86,
+       65,   69,   92,  130,   78,   70,   85,   68,   87,   66,
+       72,   79,   72,   72,   68,   72,   88,  133,   68,   80,
        72,   73,   89,   81,   68,   90,   82,   68,   68,   83,
-       68,   97,   91,  149,   68,   98,   68,  117,   68,   94,
-       68,  118,   95,  101,   68,  105,   96,  136,   68,  102,
-       68,   99,  103,  108,  134,  106,   68,   68,  107,  104,
-      141,   68,  112,  109,  113,  126,  126,  110,  111,  123,
-      115,  123,  123,  129,  123,  116,   68,  135,   72,  114,
-
-       72,   72,  128,   72,  128,  128,   68,  128,   67,  131,
-       67,   67,   68,   67,  137,   68,   68,   68,   67,   72,
-      138,   72,   72,  142,   72,   68,  144,  139,   68,   72,
-       73,   68,   68,   68,  140,   68,  148,  145,   68,   68,
-       68,  143,  151,  146,  159,  152,   68,  150,   68,  147,
-       68,  155,   68,  157,  154,  160,   68,  158,  164,  153,
-       68,   68,   68,  162,   68,  161,  165,   68,   68,   68,
-       68,  156,  167,  163,   68,  174,  168,   68,   68,  166,
-       68,  170,   68,  176,  169,  171,   68,   68,  172,  175,
-       68,   68,  173,   68,   68,  182,  178,  119,  119,  126,
-
-      126,  121,  179,  177,  121,  183,   68,  271,  180,  184,
-      123,  186,  123,  123,  128,  123,  128,  128,   72,  128,
-       72,   72,  129,   72,   68,  185,  187,   68,   68,  131,
-       68,   68,  192,   68,   68,  189,  194,   68,  193,  188,
-       68,   68,   68,  190,   68,  200,   68,  202,   68,   68,
-      191,   68,  204,  201,  205,  195,   68,   68,   68,   68,
-      196,  207,   68,  203,  211,  197,   68,   68,  214,  129,
-      206,  198,  199,   68,  208,  210,  216,  209,  212,   68,
-      215,   68,  213,   68,  219,   68,  221,  217,  218,   68,
-      220,   68,  222,   68,   68,   68,   68,   68,   68,   68,
-
-      223,  224,  226,  225,   68,   68,  228,   68,   68,  127,
-      231,   68,  235,   68,  229,  237,  227,   68,   68,   68,
-       68,  241,  129,  239,  230,  238,  233,  234,   68,  232,
-      242,  236,  244,   68,  247,   68,   68,   68,  240,   68,
-      250,  245,   68,   68,  249,   68,   68,  251,   68,   68,
-      256,  254,  248,  243,   68,   68,  257,  255,  246,   68,
-       68,  252,   68,  260,   68,   68,  253,  263,  261,   68,
-       68,  265,   68,   68,  262,  258,  267,  259,  266,   68,
-       68,   68,   68,  264,   68,  272,   68,  275,   68,   68,
-       68,   68,   68,  276,   68,   68,   68,  338,  269,  268,
-
-      274,  277,   68,  270,  273,  280,  281,   68,  278,  282,
-      283,  279,  284,   68,   68,   68,   68,  285,   68,  286,
-      290,   68,  287,  291,   68,  289,   68,  292,   68,  295,
-      288,   68,   68,   68,   68,   68,  298,  297,   68,  293,
-      304,   68,   68,   68,   68,   68,   68,  305,  294,  299,
-      303,  296,   68,   68,  300,  309,   68,  301,  308,  302,
-      129,   68,   68,   68,  306,  320,  307,  311,  325,   68,
-       68,  310,   68,   68,  312,  313,  319,  323,   68,   68,
-       68,  321,  322,   68,  314,   68,  315,  316,  317,  324,
-      326,  318,   68,  327,  328,   68,   68,  330,   68,  337,
-
-      329,  331,  332,  333,   68,   68,   68,   68,  339,   68,
-       68,  335,  334,   68,  336,   68,   68,  346,  342,  344,
-      345,  341,  348,   68,  340,  347,   68,   68,   68,  349,
-       68,  343,  353,  350,   68,  352,   68,   68,   68,  351,
-       68,   68,   68,  359,   68,  355,  357,   68,  360,   68,
-      356,  354,   68,   68,   68,   68,   68,  362,   68,   68,
-       68,  358,  363,  368,  364,  361,  370,  369,   68,   68,
-      367,   68,   68,  373,  365,  366,   68,   68,  371,   68,
-       68,  375,   68,   68,  385,   68,  388,  374,   68,   68,
-      372,   68,  390,  376,  386,   68,  384,   68,  377,   68,
-
-      378,   68,  383,  387,   68,  379,   68,  380,   68,  392,
-      391,   68,   68,  389,   68,  381,  393,  396,  129,  401,
-      397,   68,  400,  394,   68,  382,   68,  398,  395,  399,
-       68,  405,   68,  402,   68,   68,   68,   68,   68,   68,
-      409,  411,   68,  404,  403,  413,  406,  407,  412,   68,
-       68,  408,  410,  414,   68,  415,   68,  416,   68,  417,
-       68,  420,   68,  418,  419,   68,   68,   68,   68,  421,
-      424,   68,  422,   68,   68,   68,  425,  427,   68,  430,
-      431,   68,  428,   68,  125,   68,  429,  426,  423,   68,
-      432,   68,  433,   68,   68,  434,  437,  439,  436,  438,
-
-       68,   68,   68,   68,  441,   68,  440,   68,  442,   68,
-       68,   68,  443,   68,  447,  446,  124,  435,  448,   68,
-      449,  444,  451,  445,  450,   68,   68,   68,  452,  453,
-      454,   68,   68,  456,  455,   68,   68,   68,  457,   68,
-       68,   68,   68,   68,   68,  462,   68,   68,  467,   68,
-      458,  463,   68,   68,  471,  459,   68,  469,  460,  464,
-      461,  465,  466,   68,   68,  468,   68,  470,  472,   68,
-       68,   68,   68,   68,   68,  476,  475,  478,  477,  474,
-       68,  481,   68,  473,   68,  479,   68,  129,   68,  485,
-       68,  480,  484,  482,  486,  490,  483,   68,  488,   68,
-
-       68,   68,   68,  491,   68,   68,  489,   68,   68,  487,
-      493,   68,  499,   68,  497,  498,  496,   68,  506,  492,
-      494,  495,   68,   68,  500,   68,  501,   68,   68,  502,
-      509,  510,   68,   68,  503,  511,   68,  512,   68,   68,
-      504,  505,  515,  507,   68,  514,   68,   68,  508,   68,
-      519,  122,  517,  513,   68,  518,   68,   68,  523,   68,
-       68,   68,  522,  524,   68,   68,  516,  525,   68,  520,
-       68,   68,  526,  527,  521,  529,  531,   68,  530,   68,
-      533,   68,   68,   68,  537,   68,  528,  532,   68,   68,
-       68,  535,   68,  538,   68,   68,  536,   68,   68,   68,
-
-      534,  539,   68,  546,   68,   68,  545,   68,   68,   68,
-      540,   68,   68,  541,  542,  551,  549,  543,  544,  550,
-      547,  554,   68,  548,  557,  553,   68,   68,  552,   68,
-       68,  555,   68,  560,  558,  561,   68,   68,   68,  562,
-       68,  556,  565,   68,  567,   68,   68,   68,  568,  129,
-       68,  559,   68,   68,  570,  563,  564,   68,  566,   68,
-       68,  569,   68,   68,  579,   68,   68,   68,   68,  602,
-      586,  571,   68,  573,  585,   68,  582,  572,   68,  593,
-      581,  574,  580,  575,  583,   68,  584,  576,   68,  577,
-       68,  587,   68,  591,  578,   68,  588,  595,  589,  592,
-
-       68,  594,   68,  596,   68,  599,   68,   68,  601,   68,
-       68,  600,   68,   68,   68,   68,  590,  605,  597,   68,
-       68,  598,   68,  604,  606,  608,   68,  612,  603,   68,
-       68,  618,   68,  607,   68,  611,  610,   68,   68,  609,
-       68,   68,  614,  615,  613,  616,  619,   68,  620,  625,
-      617,   68,  621,   68,   68,  622,   68,   68,  623,  624,
-      627,   68,   68,   68,   68,   68,  628,  626,  629,   68,
-      630,  631,  632,   68,   68,   68,   68,  635,  633,   68,
-      634,   68,   68,   68,   68,   68,   68,  640,  641,  643,
-       68,   68,  645,  636,  639,  637,  644,   68,  646,  638,
-
-      648,   68,  642,   68,   68,  647,   68,   68,  652,   68,
-      649,   68,   68,   68,   68,   68,   68,  660,  650,  651,
-      654,  661,   68,   68,  653,   68,   68,   68,  655,  657,
-      662,  658,   68,   68,  659,   68,   68,  663,  656,   68,
-      665,  664,  668,   68,   68,   68,   68,  666,  667,   68,
-      671,  673,   68,  670,  669,   68,  675,   68,  672,   68,
-       68,   68,   68,   68,  676,   68,   68,   68,  674,   68,
-      687,  683,  677,  679,  678,   68,   68,   68,  686,  680,
-       68,  682,  684,  681,   68,  689,  685,  692,   68,  691,
-      688,  693,   68,   68,  696,   68,  697,   68,   68,   68,
-
-      690,  694,  695,  698,   68,   68,  700,   68,  703,  699,
-      704,  701,   68,   68,   68,   68,   68,  705,  706,   68,
-       68,   68,   68,   68,  712,  702,   68,  711,  707,   68,
-       68,   68,   68,  708,  717,  709,  713,  710,  720,   68,
-      714,   68,  716,  715,  721,   68,   68,   68,  718,  722,
-       68,  724,  723,  725,   68,  728,  719,  727,   68,  729,
-       68,  726,   68,   68,   68,   68,   68,   68,  731,   68,
-      733,   68,  732,  735,  737,  738,  736,   68,   68,   68,
-       68,  740,  730,  739,  734,   68,   68,   68,  743,   68,
-      742,  744,   68,  747,  741,   68,   68,   68,   68,   68,
-
-       68,  751,   68,   68,  756,   68,   68,  745,  757,   68,
-       68,   68,  746,   68,   68,  748,  749,  750,  760,   68,
-      755,   68,  752,  754,   68,  763,   68,   68,  753,  759,
-      762,   68,  758,  765,   68,   68,   68,  761,   68,   68,
-      766,  769,  764,   68,  771,  770,  767,   68,   68,   68,
-      774, 1064,   68,  768,  775,  778,  773,  777,  779,   68,
-       68,  772,   68,   68,   68,  780,   68,  781,  786,   68,
-      776,  784,   68,  782,   68,  785,   68,   68,   68,  790,
-       68,   68,   68,  789,   68,  783,   68,   68,   68,   68,
-       68,  787,  799,  788,   68,  798,   68,  791,   68,  792,
-
-      793,  794,  795,  801,  797,   68,   68,  796,   68,  800,
-      804,   68,  807,  805,   68,  802,  803,   68,  806,  808,
-       68,  809,  810,  811,   68,  812,   68,   68,   68,   68,
-      814,  813,   68,   68,   68,   68,  819,   68,   68,  817,
-       68,   68,  821,   68,   68,   68,   68,  815,  824,  823,
-      818,  826,   68,   68,   68,  829,   68,   68,  816,   68,
-      820,   68,   68,  833,  825,  822,   68,  828,  835,   68,
-      827,  834,   68,   68,   68,   68,  830,  831,  838,  832,
-      839,   68,  836,  837,  841,  842,   68,  843,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,  847,   68,  840,
-
-      849,  850,   68,  851,   68,   68,  844,   68,  845,   68,
-      855,  846,  852,  858,   68,   68,  848,   68,   68,  856,
-       68,   68,  857,   68,  853,  854,   68,  863,   68,  867,
-       68,  875,   68,   68,  859,  860,  862,  864,  861,  866,
-      865,   68,  869,   68,  868,  870,  874,   68,   68,   68,
-       68,   68,  871,   68,   68,  872,  873,   68,   68,  882,
-       68,  885,  877,   68,  879,  886,   68,   68,  876,  888,
-       68,  878,   68,  887,   68,  881,  883,   68,   68,  880,
-      890,  884,   68,   68,   68,  889,  891,   68,   68,   68,
-      892,  893,   68,   68,   68,   68,  899,   68,  900,  901,
-
-      902,  894,   68,  895,  896,  897,  903,   68,   68,  898,
-      906,   68,   68,  910,   68,   68,   68,   68,   68,  918,
-      908,   68,  905,  913,   68,  904,  907,  909,  911,  914,
-       68,   68,  912,  915,   68,  917,   68,   68,   68,   68,
-      916,   68,  919,  922,   68,  924,   68,  925,   68,  926,
-       68,   68,  928,  927,   68,  930,  920,   68,  921,  923,
-       68,  932,   68,   68,  933,  934,  931,   68,   68,  929,
-       68,   68,   68,   68,  942,   68,   68,   68,  944,  935,
-       68,  936,   68,   68,   68,   68,  937,   68,  938,  947,
-       68,  939,  940,  946,  941,   68,  948,   68,  950,   68,
-
-      945,   68,  943,  954,  953,   68,  952,   68,   68,  949,
-      959,  951,  956,  957,   68,  955,   68,   68,   68,   68,
-       68,  958,   68,  967,   68,  963,   68,  960,   68,  964,
-      970,  974,  961,  965,   68,   68,   68,  962,  966,  971,
-       68,  972,  969,   68,  976,  973,   68,  968,   68,   68,
-       68,   68,  981,   68,  978,  975,  983,   68,   68,  980,
-      977,   68,   68,  979,   68,  985,  986,   68,  987,   68,
-      984,   68,   68,   68,   68,  982,  992,  988,  989,   68,
-      990,  991,   68,  993,   68,   68,   68,  998,   68,   68,
-       68, 1000, 1003,  996,  994,  997,   68,  995,   68,  999,
-
-       68, 1002, 1004,   68,   68, 1005, 1001,   68, 1007,   68,
-       68,   68,   68,   68,   68,   68,   68,   68, 1015,   68,
-     1014,   68, 1009, 1010, 1006, 1011,   68, 1012, 1017,   68,
-     1008, 1018,   68,   68, 1013, 1016,   68,   68, 1020, 1021,
-       68, 1022,   68, 1026, 1024, 1023,   68, 1019,   68, 1025,
-       68, 1027, 1030,   68,   68,   68,   68,   68,   68,   68,
-     1036, 1028,   68,   68, 1029, 1032, 1031, 1034, 1033, 1035,
-       68,   68, 1038,   68,   68, 1037,   68, 1041,   68, 1040,
-     1042,   68, 1039, 1045,   68, 1044,   68, 1046, 1047,   68,
-     1049,   68,   68, 1052,   68,   68, 1050,   68, 1043,   68,
-
-     1048, 1055,   68, 1053,   68, 1051, 1054,   68, 1056, 1058,
-       68, 1057,   68,   68, 1059,   68,   68,   68, 1061,   68,
-       68,   68, 1069,   68,   68,   68,   68, 1060, 1070,   68,
-     1073,   68, 1067, 1074,   68, 1063, 1065, 1071,   68, 1072,
-     1066, 1062, 1068, 1075,   68, 1077,   68, 1078,   68,   68,
-     1079, 1076, 1080,   68, 1081,   68,   68, 1083,   68, 1085,
-       68, 1082,   68,   68,   68,   68, 1089, 1088, 1084, 1087,
-     1091,   68,   68, 1093,   68, 1094,   68,   68,   68, 1096,
-     1086, 1090,   68,   68,   68,   68,   68,   68, 1098,   68,
-       68, 1092, 1102,   68, 1097, 1106,   68,   68, 1100, 1104,
-
-       68, 1107, 1105, 1095, 1103,   68,   68, 1101, 1111, 1099,
-       68, 1110,   68,   68, 1109,   68, 1108,   68, 1112,   68,
-     1117, 1114, 1116,   68, 1115,   68, 1113, 1118,   68, 1119,
-       68, 1121,   68, 1120,   68,   68,   68,   68,   68, 1122,
-     1124, 1127, 1126, 1123, 1128,   68,   68,   68,   68,   68,
-       68, 1132, 1130,   68, 1133, 1125, 1131, 1134,   68, 1135,
-       68, 1129, 1136,   68, 1137,   68, 1138,   68,   68,   68,
-     1142,   68, 1140, 1141,   68,   68,   68, 1144,   68, 1143,
-       68, 1145,   68, 1139, 1146,   68, 1147,   68, 1148,   68,
-     1149,   68,   68,   68, 1151, 1155,   68,   68, 1150,   68,
-
-       68,   68,   68, 1152, 1153,   68, 1156,   68,  120,   68,
-       68,   68, 1163, 1154, 1159, 1164, 1165,   68,   68, 1161,
-     1158,   68, 1167, 1168,   68, 1157, 1160, 1162,   68, 1166,
-       68,   68,   68, 1170,   68, 1175,   68, 1169, 1176,   68,
-       68,   68,   68,   68,   68, 1182,   68, 1181, 1171, 1172,
-     1173, 1174,   68,   68, 1177, 1185,   68,   68,   68, 1178,
-       68, 1179, 1180, 1187,   68,   68, 1188, 1183,   68, 1190,
-       68, 1184,   68, 1191,   68, 1192, 1186,   68,   68,   68,
-     1189,   68, 1193, 1195, 1196, 1198,   68, 1194, 1199,   68,
-     1200,   68, 1197, 1201,   68,   68, 1202,   68,   68,   68,
-
-       68,   68,   68, 1203, 1205,   68,   68,   68, 1209,   68,
-     1211, 1204,   68, 1206, 1207, 1208, 1213,   68, 1210,   68,
-     1215, 1212,   68,   68,   68, 1219,   68, 1216, 1214,   68,
-       68, 1221, 1217,   68, 1223,   68, 1222, 1218, 1224,   68,
-       68,   68, 1227, 1228,   68,   68,   68,   68,   68, 1220,
-     1229, 1230,   68,   68,   68, 1226,   68, 1234, 1225,   68,
-     1232,   68,   68,   68, 1236,   68,   68, 1231,   68, 1241,
-     1235,   68, 1233,   68, 1239, 1243,   68, 1244,   68,   68,
-     1245, 1237,   68, 1240,   68,   68, 1242, 1246, 1238, 1249,
-       68, 1247,   68, 1250, 1251, 1252,   68,   68,   68, 1256,
-
-       68,   68,   68,   68,   68, 1253,   68, 1248,   68,   68,
-     1257, 1261, 1260, 1255, 1264,   68, 1254,   68, 1258,   68,
-     1266,   68, 1259,   68, 1265, 1269,   68,   68, 1263, 1270,
-       68,   68,   68,   68, 1262, 1274,   68, 1267,   68, 1276,
-       68,   68,   68, 1272,   68, 1268, 1271, 1278,  129, 1279,
-     1275, 1309, 1273, 1280,   68, 1281,   68, 1282,   68,   68,
-     1277, 1284,   68,   68, 1283,   68, 1285, 1286,   68,   68,
-       68, 1288, 1289,   68, 1287, 1290,   68,   68, 1293,   68,
-       68, 1291, 1295,   68, 1294,   68, 1297,   68,   68, 1296,
-       68, 1300,   68, 1301,   68, 1302,   68, 1292, 1303,   68,
-
-       68,   68, 1305, 1298,   68,   68, 1308,   68, 1299, 1306,
-       68,   68, 1304,   68, 1313,   68,  127,  125,  124,  122,
-      120,   68, 1314, 1314, 1307, 1310, 1314, 1311, 1314, 1314,
-     1312,   40,   40,   40,   40,   40,   40,   40,   45,   45,
+       68,   98,   91,  150,   68,   99,   95,  127,  127,   94,
+       68,   68,   96,  102,  137,  106,   97,   68,   68,  103,
+       68,  100,  104,  109,  135,  107,   68,   68,  108,  105,
+       68,   68,  113,  110,  114,  138,  130,  111,  112,   68,
+      116,   68,  118,  149,  139,  117,  119,  136,  124,  115,
+
+      124,  124,   72,  124,   72,   72,  129,   72,  129,  129,
+       68,  129,   67,  132,   67,   67,   68,   67,   68,   68,
+       68,   68,   67,   72,  143,   72,   72,   68,   72,   68,
+      140,   68,  142,   72,   73,  145,  146,  141,  147,   68,
+       68,   68,  144,  152,   68,  148,  153,   68,   68,  156,
+      155,  158,   68,  151,  163,  159,  161,   68,   68,   68,
+      154,  160,   68,   68,  162,  164,   68,  167,   68,  157,
+       68,   68,  165,  169,   68,   68,  176,  170,   68,   68,
+       68,   68,  166,   68,  168,   68,  173,  172,   68,  178,
+      171,  177,   68,   68,  174,   68,  175,  184,  180,  181,
+
+      120,  120,  127,  127,  122,  185,  182,  122,  130,  179,
+      130,  187,  124,  186,  124,  124,  129,  124,  129,  129,
+       72,  129,   72,   72,   68,   72,   68,  189,   68,  188,
+       68,  132,   68,   68,  194,   68,  191,  196,   68,   68,
+      195,  190,   68,   68,  202,  192,   68,   68,   68,   68,
+       68,  204,  206,  193,   68,  207,   68,  203,  197,   68,
+       68,  213,   68,  198,  209,   68,  216,   68,  199,   68,
+      205,   68,  128,  208,  200,  201,  218,  210,  212,   68,
+      211,   68,  214,  215,   68,  217,  222,  219,  220,   68,
+      221,   68,  224,  225,  223,   68,   68,   68,   68,   68,
+
+       68,   68,  226,   68,   68,  227,  229,   68,   68,   68,
+       68,  231,  238,  234,   68,   68,  228,   68,   68,  232,
+      240,  242,  241,  230,   68,  245,   68,  233,  236,  237,
+       68,  235,   68,  244,  239,  247,   68,  130,  248,   68,
+       68,  253,   68,  243,   68,   68,   68,   68,  246,  250,
+      252,   68,  254,   68,  258,  249,   68,  259,  251,  255,
+       68,  257,   68,  256,   68,  260,   68,   68,  266,  263,
+       68,  264,   68,   68,   68,  268,  261,  262,   68,  265,
+      270,   68,   68,  269,   68,   68,  267,   68,  275,   68,
+       68,   68,  278,   68,   68,   68,  279,   68,   68,   68,
+
+      272,  271,  274,  277,   68,  273,  280,  283,  276,  288,
+       68,  285,  281,   68,   68,  282,   68,  284,  286,  287,
+       68,   68,   68,  289,  294,   68,  295,   68,  296,  292,
+      290,  293,   68,  291,   68,  299,   68,   68,   68,   68,
+       68,  302,  301,   68,  308,   68,   68,  297,   68,   68,
+      309,   68,   68,  303,  298,  307,  300,   68,   68,  304,
+      313,   68,  305,   68,  306,  130,  312,   68,   68,  310,
+      324,  311,  315,  126,   68,   68,  314,   68,  323,  316,
+      317,   68,  327,  329,   68,   68,  325,  326,   68,  318,
+       68,  319,  320,  321,  328,  330,  322,   68,   68,  331,
+
+      332,  333,  335,   68,  334,  336,  337,   68,   68,   68,
+       68,  342,   68,   68,   68,  125,  343,   68,  338,  339,
+       68,   68,   68,  340,  341,  350,  346,  349,  345,  348,
+      352,  344,   68,   68,   68,   68,   68,   68,  354,  347,
+      353,  351,   68,  356,   68,  357,   68,   68,   68,  355,
+       68,   68,  361,  359,   68,   68,   68,  364,  358,  360,
+      362,   68,  365,   68,   68,   68,  369,  363,   68,  366,
+       68,  367,   68,  368,   68,  375,   68,  373,   68,   68,
+       68,   68,  374,  378,  372,  370,   68,   68,  371,   68,
+       68,  380,   68,   68,  376,   68,  379,  390,   68,  393,
+
+      377,   68,   68,  381,   68,  395,  389,  391,  382,   68,
+      383,   68,  388,  392,   68,  384,  396,  385,   68,   68,
+      394,   68,   68,  397,   68,  386,  401,   68,  130,  398,
+       68,  402,  405,  406,   68,  387,   68,  399,   68,  410,
+       68,  400,  404,  403,   68,   68,  407,   68,  408,  409,
+       68,   68,   68,  414,  416,   68,  411,  412,  417,   68,
+      418,   68,  413,  123,  415,   68,  419,   68,  420,   68,
+      421,   68,  425,  422,   68,   68,  423,   68,  424,   68,
+       68,  428,  429,  426,   68,  427,   68,   68,   68,  430,
+       68,   68,  435,  432,  436,   68,   68,  437,  433,   68,
+
+      431,   68,  434,   68,  438,   68,   68,  439,  442,   68,
+      441,  443,  445,   68,  450,   68,   68,   68,  447,  446,
+       68,  444,   68,  448,   68,   68,   68,  449,  453,  440,
+      451,  452,   68,  458,  455,  457,   68,  454,  456,   68,
+       68,   68,  461,   68,  459,  463,  462,   68,   68,   68,
+      464,   68,   68,   68,  465,   68,   68,  469,   68,  460,
+       68,  474,   68,   68,  470,  121,   68,  466,   68,  476,
+      467,  471,  468,   68,   68,  473,  472,  477,   68,  478,
+       68,  475,  480,   68,   68,   68,   68,   68,   68,  483,
+      482,  485,  484,  481,  479,   68,   68,  489,   68,  130,
+
+      486,   68,   68,  488,  491,  487,   68,   68,  497,  492,
+       68,  493,  490,   68,   68,  495,   68,   68,   68,  502,
+      498,   68,  494,  496,  506,  500,   68,   68,  499,   68,
+      503,  505,  504,  501,   68,   68,  507,   68,  508,   68,
+      513,  509,   68,  517,   68,  516,  510,   68,   68,  519,
+       68,   68,  511,  512,  518,  514,   68,  521,   68,   68,
+       68,  522,   68,  526,  515,  520,   68,   68,  525,   68,
+      531,  523,  530,   68,  529,   68,   68,   68,  524,  532,
+       68,  527,   68,  533,   68,  528,   68,   68,  534,   68,
+      535,  537,  539,   68,  538,  541,   68,  540,   68,   68,
+
+       68,  543,  536,   68,  545,   68,   68,   68,   68,  547,
+       68,   68,   68,  544,   68,  542,   68,  548,   68,   68,
+      546,   68,  555,  554,   68,   68,   68,  560,  549,  550,
+      551,   68,  553,  552,  556,  558,  563,   68,  557,  559,
+       68,   68,   68,   68,  561,  562,  564,   68,  567,   68,
+      569,   68,  566,  570,  571,   68,  565,   68,   68,  574,
+       68,  576,   68,   68,   68,  577,  130,   68,  568,   68,
+      573,  579,   68,  572,   68,   68,   68,   68,  578,   68,
+      575,  588,   68,   68,   68,  595,   68,   68,  580,  582,
+       68,  590,  594,  591,   68,  602,  581,   68,  593,  589,
+
+      583,  601,  584,  592,   68,  596,  585,   68,  586,   68,
+      597,   68,  598,  587,  600,   68,  603,   68,   68,  605,
+       68,  606,  604,  608,   68,   68,  610,   68,   68,  609,
+      599,   68,   68,  614,   68,  611,   68,  607,   68,  612,
+      613,   68,   68,  615,   68,  621,  617,   68,   68,   68,
+       68,   68,   68,  620,  624,  616,  619,  625,  618,   68,
+      627,   68,  628,  623,  626,  622,  629,   68,  630,   68,
+      634,   68,  631,   68,   68,  632,   68,   68,  633,   68,
+      637,   68,   68,   68,  635,   68,  639,  640,   68,  641,
+       68,  642,  643,   68,   68,   68,  636,  644,  646,   68,
+
+      638,   68,   68,  130,   68,   68,   68,   68,  645,  651,
+      652,   68,  647,   68,  654,  650,   68,  656,  648,   68,
+      657,  649,   68,   68,  653,   68,  660,  655,  658,  659,
+       68,   68,  663,  661,   68,  662,   68,   68,   68,   68,
+       68,   68,  671,  665,   68,  672,   68,   68,   68,  664,
+       68,  673,   68,  668,   68,  669,  666,  676,  674,   68,
+       68,  670,  675,  667,  679,   68,   68,   68,   68,  677,
+       68,   68,  682,   68,  678,  681,  684,  686,  680,   68,
+       68,   68,   68,   68,   68,   68,   68,  683,  687,  685,
+       68,   68,  694,   68,  690,  688,  689,   68,   68,  698,
+
+       68,  700,  691,  693,   68,  692,  695,  697,   68,   68,
+      696,  699,  703,  702,   68,   68,  704,   68,  735,  707,
+      701,   68,  705,  706,   68,   68,  708,   68,   68,   68,
+      711,   68,  709,  710,   68,  713,  712,  715,  716,   68,
+       68,   68,   68,   68,  717,  718,   68,   68,   68,  719,
+       68,  724,  714,   68,  720,   68,  721,  723,  722,   68,
+       68,   68,   68,  725,  733,   68,   68,  727,  726,  729,
+      734,   68,   68,  730,  728,  738,   68,  736,  731,   68,
+      740,   68,   68,   68,   68,  737,   68,  732,  741,  742,
+       68,  744,  745,   68,   68,   68,   68,   68,  746,  739,
+
+      750,  748,  743,  749,  751,   68,   68,   68,  753,   68,
+       68,  752,  747,   68,   68,   68,  754,  757,   68,  760,
+      759,   68,   68,   68,   68,  756,   68,   68,  764,  755,
+       68,   68,  769,   68,   68,  758,  770,   68,   68,   68,
+       68,  761,  762,  765,  763,  773,   68,   68,   68,  767,
+       68,  776,   68,   68,   68,  766,  768,  772,  775,   68,
+      771,  783,   68,   68,  774,   68,  777,  779,  782,  778,
+      784,  781,   68,   68,  780,   68,   68,   68,   68,  791,
+      785,  786,  788,  790,   68,  792,   68,  793,  787,   68,
+       68,  795,   68,  797,  794,   68,  789,  798,   68,  799,
+
+       68,   68,   68,   68,   68,  804,   68,   68,   68,  803,
+       68,  796,   68,   68,  800,   68,   68,  812,   68,   68,
+      801,  802,  814,  805,  813,  806,  807,  808,  811,  809,
+       68,   68,   68,  810,  818,   68,   68,   68,   68,  822,
+      816,  819,  820,  815,   68,   68,   68,  824,  825,   68,
+      823,   68,  817,   68,  826,   68,   68,  821,  827,   68,
+       68,   68,  829,  828,  830,   68,  834,   68,   68,   68,
+      832,  833,   68,  836,   68,   68,  831,   68,   68,  839,
+       68,   68,   68,  841,   68,  838,   68,  844,  835,   68,
+       68,  837,  848,   68,   68,  843,  840,   68,  842,  849,
+
+      850,   68,  845,   68,  846,   68,   68,  853,  854,  847,
+       68,  852,   68,  851,  857,  856,   68,  858,   68,   68,
+       68,   68,   68,   68,   68,   68,  862,   68,  859,  864,
+      866,  855,  865,   68,   68,   68,   68,  860,   68,  873,
+      861,  867,   68,   68,   68,  863,   68,  868,  871,  870,
+       68,  872,   68,   68,  869,   68,  883,   68,   68,  878,
+      882,   68,  874,  875,   68,  877,  879,  876,   68,  880,
+       68,  881,   68,  885,  884,  890,  891,   68,   68,  887,
+       68,  889,  888,   68,   68,   68,   68,  886,   68,   68,
+      898,   68,   68,  128,   68,  901,  893,   68,  892,  895,
+
+       68,   68,  894,  903,   68,  909,  897,  899,   68,   68,
+      900,  896,  902,  905,  906,  904,   68,  910,   68,  907,
+       68,   68,   68,   68,   68,  908,   68,   68,   68,   68,
+       68,  916,   68,  917,  918,  919,   68,   68,  911,  913,
+      912,  920,  914,  923,   68,  921,  915,   68,   68,  925,
+      927,  922,   68,   68,   68,   68,   68,  931,   68,   68,
+      926,  924,  930,  933,  928,  932,   68,  934,   68,  935,
+       68,  929,   68,   68,   68,  939,   68,  941,   68,  943,
+      936,  942,   68,   68,   68,  945,  944,   68,   68,  937,
+       68,  947,  938,  940,  949,   68,   68,   68,  950,  951,
+
+       68,   68,   68,   68,   68,  946,   68,  959,   68,   68,
+       68,  961,  952,  948,  953,   68,   68,   68,   68,  954,
+       68,  955,  956,  957,  963,  965,   68,  958,   68,  966,
+       68,  968,  964,   68,   68,  960,  962,  972,   68,  971,
+       68,   68,   68,  975,   68,   68,  976,  974,   68,  970,
+       68,   68,  967,   68,  969,   68,   68,  977,  973,  986,
+       68,  982,   68,   68,   68,  978,  979,  984,  981,  980,
+      989,  983,  985,  990,   68,   68,  991,  993,  988,   68,
+      992,   68,   68,  995,  987,   68,   68,   68,   68,   68,
+      997,  994,   68, 1000,   68, 1002,   68,  996,   68,  998,
+
+       68, 1008,   68,   68, 1003, 1004, 1005,   68, 1006,   68,
+       68,   68,   68,   68,  999, 1011, 1001, 1007, 1009, 1010,
+       68, 1012, 1017,   68,   68,   68,   68,   68,   68, 1021,
+     1019, 1014, 1013, 1015, 1016,   68,   68,   68, 1022,   68,
+     1018, 1023,   68,   68, 1020,   68, 1024,   68, 1026,   68,
+       68,   68,   68,   68,   68,   68, 1034, 1025, 1033,   68,
+     1031, 1028, 1029, 1030, 1027,   68, 1038,   68, 1036,   68,
+       68,   68, 1032, 1035,   68, 1040, 1041,   68,   68, 1037,
+       68, 1046, 1042, 1043,   68,   68,   68,   68,  126, 1044,
+     1047, 1050,   68,   68,   68, 1039, 1054,   68,   68,   68,
+
+     1045, 1049,   68, 1048,   68, 1051, 1052, 1055,   68, 1053,
+       68, 1056,   68, 1057,   68, 1058,   68, 1059,   68,   68,
+     1062,   68, 1060,   68, 1063, 1066,   68,   68, 1061,   68,
+     1065, 1070, 1067, 1068,   68,   68, 1073,   68, 1069,   68,
+     1071, 1064, 1072,   68, 1076,   68,   68, 1074,   68, 1077,
+       68,   68, 1075,   68,   68, 1079,   68, 1080, 1078, 1082,
+       68,   68,   68,   68,   68,   68, 1081, 1090,   68,   68,
+       68,   68, 1091,   68,   68, 1130, 1088,   68, 1094, 1084,
+       68, 1086, 1083, 1092, 1087, 1085, 1089, 1093, 1095,   68,
+     1096,   68, 1100, 1097, 1098,   68, 1099,   68, 1101,   68,
+
+     1102,   68,   68,   68, 1105,   68,   68,   68, 1104, 1107,
+       68,   68,   68, 1109,   68, 1110,   68, 1111, 1113,   68,
+       68, 1103, 1115,   68,   68, 1106, 1116,   68,   68, 1108,
+       68, 1118, 1112, 1114,   68,   68, 1120, 1119,   68, 1121,
+       68,   68,   68,   68,   68, 1129, 1117, 1125,   68,   68,
+       68, 1123, 1127, 1128,   68, 1133, 1126, 1134, 1132,   68,
+     1122, 1124,   68,   68, 1135,   68,   68,   68, 1131, 1139,
+       68, 1142, 1136,   68, 1137, 1140, 1143, 1138, 1141,   68,
+     1144,   68,   68,   68,   68,   68,   68, 1145, 1147, 1150,
+       68, 1149,   68,   68,   68,   68, 1151, 1155, 1153,   68,
+
+       68, 1156,   68, 1146,   68, 1148,   68, 1154, 1152, 1157,
+       68, 1158, 1159,   68, 1160,   68, 1161,   68, 1162,   68,
+     1163,   68,   68,   68, 1164, 1166,   68, 1165, 1167,   68,
+       68, 1168,   68, 1169,   68, 1170, 1171,   68, 1172,   68,
+     1173,   68,   68,   68, 1174,   68,   68, 1180,   68,   68,
+       68,   68, 1175,   68, 1176, 1177,   68, 1178, 1181,   68,
+       68,   68,   68,   68, 1190,   68, 1179, 1188, 1189, 1184,
+       68, 1183,   68, 1186,   68, 1192, 1182, 1185, 1187, 1191,
+     1193,   68,   68,   68,   68, 1195,   68, 1200,   68, 1201,
+     1196, 1194,   68,   68,   68,   68,   68,   68,   68, 1207,
+
+     1198, 1197, 1208,   68,   68, 1199,   68, 1202, 1211,   68,
+       68,   68, 1203, 1213,   68, 1204, 1205,   68, 1206, 1209,
+     1214,   68,   68, 1215, 1210,   68, 1217,   68,   68, 1212,
+     1218,   68, 1219, 1216,   68,   68, 1220,   68,  125, 1222,
+     1223, 1225,   68, 1226,   68, 1227, 1221, 1228,   68,   68,
+       68,   68, 1224, 1229,   68,   68, 1230,   68, 1232,   68,
+       68, 1231,   68, 1236,   68,   68,   68,   68, 1234, 1235,
+     1233, 1240,   68, 1237, 1242,   68, 1241,   68,   68,   68,
+       68,   68, 1244,  123, 1238, 1239, 1243,   68, 1245, 1247,
+       68,   68, 1249, 1246,   68, 1251,   68, 1250, 1252,   68,
+
+       68, 1248, 1255, 1256,   68, 1253,   68,   68,   68,   68,
+     1257,   68,   68,   68, 1254, 1258,   68, 1262,   68, 1260,
+       68,   68,   68, 1264,   68,   68,   68, 1259, 1269, 1263,
+       68, 1261,   68, 1267, 1271,   68, 1272,   68,   68, 1273,
+     1265,   68, 1268,   68, 1270,   68, 1274, 1266, 1277,   68,
+     1275,   68, 1278,   68, 1279,   68,   68,   68, 1280, 1284,
+       68,   68,   68,   68, 1281,   68, 1276,   68, 1282,   68,
+     1285, 1283,   68, 1286, 1289, 1288, 1292,   68,   68, 1294,
+       68, 1287,   68, 1293, 1291, 1297,   68, 1298,   68, 1290,
+       68,   68, 1295,   68, 1302,   68,   68, 1304,   68,   68,
+
+       68,   68,   68, 1300, 1296,  121, 1307, 1311, 1303, 1299,
+     1308,   68,   68, 1301, 1306, 1309,   68, 1315, 1305, 1310,
+       68, 1312,   68,   68, 1313, 1314,   68,   68, 1317,   68,
+       68,   68,   68, 1321,   68, 1316, 1318, 1319,   68, 1323,
+       68,   68, 1322, 1325,   68, 1324,   68,   68, 1328,   68,
+     1320, 1329,   68, 1330,   68, 1331,   68,   68,   68, 1333,
+       68, 1326,   68,   68, 1334, 1327, 1336,   68,   68, 1332,
+       68,   68, 1337, 1341,   68,   68, 1342, 1342, 1342, 1342,
+     1342, 1342, 1335, 1338, 1339, 1342, 1342, 1342, 1342, 1342,
+     1340,   40,   40,   40,   40,   40,   40,   40,   45,   45,
+
        45,   45,   45,   45,   45,   50,   50,   50,   50,   50,
        50,   50,   56,   56,   56,   56,   56,   56,   56,   61,
-       61,   61,   61,   61,   61,   61,   71,   71, 1314,   71,
-       71,   71,   71,  119,  119, 1314, 1314, 1314,  119,  119,
-      121,  121, 1314, 1314,  121, 1314,  121,  123, 1314, 1314,
-     1314, 1314, 1314,  123,  126,  126, 1314, 1314, 1314,  126,
-
-      126,  128, 1314, 1314, 1314, 1314, 1314,  128,  130,  130,
-     1314,  130,  130,  130,  130,   72,   72, 1314,   72,   72,
-       72,   72,   13, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314
+       61,   61,   61,   61,   61,   61,   71,   71, 1342,   71,
+       71,   71,   71,  120,  120, 1342, 1342, 1342,  120,  120,
+      122,  122, 1342, 1342,  122, 1342,  122,  124, 1342, 1342,
+     1342, 1342, 1342,  124,  127,  127, 1342, 1342, 1342,  127,
+      127,  129, 1342, 1342, 1342, 1342, 1342,  129,  131,  131,
+     1342,  131,  131,  131,  131,   72,   72, 1342,   72,   72,
+       72,   72,   13, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342
     } ;
 
-static yyconst flex_int16_t yy_chk[2663] =
+static yyconst flex_int16_t yy_chk[2723] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1165,293 +1181,300 @@ static yyconst flex_int16_t yy_chk[2663] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
         3,    3,    4,    4,    4,   49,    5,    5,   49,    3,
         5,   15,    4,    6,    6,   15,    5,    6,    9,    9,
-        9,  115,   33,    6,    7,    7,    7,    7,    9,    7,
+        9,  116,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   44,   44,    7,    8,    8,    8,    8,
-       10,    8,   21,   33,  115,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1320,   20,   29,   20,   20,   11,
+       10,    8,   21,   33,  116,   21,   21,    8,   11,   11,
+       11,   11,   11,   11, 1348,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   74,   22,   22,   74,   25,
        12,   69,   28,   66,   22,   69,   24,   26,   26,   12,
        19,   22,   19,   19,   23,   19,   26,   66,   27,   23,
        19,   19,   27,   23,   30,   27,   23,   31,   89,   23,
-       32,   32,   27,   89,   34,   32,   39,   39,   82,   30,
-       35,   39,   31,   34,   77,   35,   31,   77,   36,   34,
+       32,   32,   27,   89,   34,   32,   31,   60,   60,   30,
+       35,   77,   31,   34,   77,   35,   31,   78,   36,   34,
        75,   32,   34,   36,   75,   35,   38,   76,   35,   34,
-       82,   37,   37,   36,   37,   60,   60,   36,   36,   55,
-       38,   55,   55,  568,   55,   38,   78,   76,   63,   37,
-
-       63,   63,   65,   63,   65,   65,   79,   65,   68,   63,
-       68,   68,   84,   68,   78,   80,   81,   85,   68,   71,
-       79,   71,   71,   83,   71,   86,   84,   80,   83,   71,
-       71,   87,   88,   90,   81,   92,   88,   85,  100,   91,
-       95,   83,   91,   86,   95,   91,   93,   90,   96,   87,
-       94,   93,   97,   94,   92,   96,   98,   94,  100,   91,
-       99,  102,  101,   98,  104,   97,  101,  103,  105,  107,
-      106,   93,  103,   99,  108,  109,  103,  110,  112,  102,
-      109,  105,  111,  111,  104,  106,  113,  114,  107,  110,
-      116,  118,  108,  117,  209,  116,  112,  120,  120,  127,
-
-      127,  122,  113,  111,  122,  117,  133,  209,  114,  118,
-      124,  133,  124,  124,  129,  124,  129,  129,  130,  129,
-      130,  130,  132,  130,  135,  132,  134,  136,  137,  130,
-      138,  134,  139,  140,  144,  136,  141,  139,  140,  135,
-      146,  141,  145,  137,  143,  143,  150,  145,  147,  148,
-      138,  142,  147,  144,  148,  142,  149,  152,  154,  153,
-      142,  150,  151,  146,  153,  142,  155,  159,  156,  128,
-      149,  142,  142,  156,  151,  152,  158,  151,  154,  157,
-      157,  158,  155,  166,  160,  161,  162,  158,  159,  160,
-      161,  162,  163,  164,  168,  165,  167,  163,  169,  170,
-
-      164,  165,  167,  166,  171,  172,  169,  173,  174,  126,
-      172,  176,  175,  177,  170,  177,  168,  175,  178,  180,
-      181,  181,  185,  179,  171,  178,  174,  174,  179,  173,
-      182,  176,  183,  186,  185,  182,  187,  183,  180,  184,
-      188,  184,  189,  192,  187,  188,  190,  189,  191,  194,
-      194,  192,  186,  182,  193,  195,  195,  193,  184,  196,
-      198,  190,  197,  198,  199,  200,  191,  201,  199,  202,
-      203,  203,  201,  204,  200,  196,  205,  197,  204,  206,
-      207,  205,  208,  202,  210,  210,  211,  213,  212,  215,
-      214,  216,  213,  214,  218,  263,  217,  263,  207,  206,
-
-      212,  215,  222,  208,  211,  217,  218,  219,  216,  219,
-      219,  216,  220,  220,  221,  223,  224,  221,  226,  222,
-      225,  225,  222,  226,  228,  224,  227,  227,  229,  230,
-      223,  231,  232,  233,  230,  234,  233,  232,  235,  228,
-      237,  236,  238,  239,  241,  237,  240,  238,  229,  234,
-      236,  231,  242,  243,  235,  242,  246,  235,  241,  235,
-      247,  245,  249,  248,  239,  246,  240,  243,  251,  250,
-      252,  242,  244,  251,  244,  244,  245,  249,  253,  254,
-      255,  247,  248,  256,  244,  262,  244,  244,  244,  250,
-      252,  244,  259,  253,  254,  260,  257,  256,  261,  262,
-
-      255,  257,  258,  258,  264,  258,  265,  266,  264,  267,
-      268,  260,  259,  270,  261,  269,  271,  270,  267,  268,
-      269,  266,  272,  273,  265,  271,  275,  272,  274,  273,
-      278,  267,  277,  274,  276,  276,  279,  277,  280,  275,
-      282,  281,  283,  283,  286,  279,  281,  285,  285,  287,
-      280,  278,  289,  288,  291,  292,  293,  287,  294,  295,
-      297,  282,  288,  294,  289,  286,  296,  295,  298,  299,
-      293,  296,  300,  299,  291,  292,  301,  302,  297,  303,
-      306,  301,  305,  308,  307,  309,  309,  300,  310,  307,
-      298,  311,  311,  302,  307,  312,  306,  313,  303,  304,
-
-      304,  314,  305,  308,  315,  304,  316,  304,  319,  313,
-      312,  318,  317,  310,  320,  304,  314,  317,  321,  322,
-      318,  323,  321,  315,  322,  304,  324,  319,  316,  320,
-      325,  326,  326,  323,  327,  328,  329,  330,  338,  331,
-      330,  332,  332,  325,  324,  334,  327,  328,  333,  333,
-      334,  329,  331,  335,  335,  336,  336,  337,  339,  338,
-      340,  341,  337,  339,  340,  342,  341,  343,  344,  342,
-      345,  346,  343,  347,  348,  345,  346,  348,  349,  349,
-      350,  351,  348,  355,  125,  350,  348,  347,  344,  352,
-      351,  353,  352,  354,  356,  353,  355,  357,  354,  356,
-
-      358,  359,  357,  362,  359,  360,  358,  361,  360,  363,
-      364,  365,  361,  366,  365,  364,  123,  353,  366,  369,
-      367,  362,  368,  363,  367,  367,  370,  368,  369,  370,
-      371,  372,  374,  372,  371,  371,  373,  375,  373,  376,
-      377,  378,  379,  381,  380,  378,  384,  382,  383,  387,
-      374,  379,  388,  383,  387,  375,  385,  385,  376,  380,
-      377,  381,  382,  386,  389,  384,  390,  386,  388,  391,
-      392,  393,  394,  396,  397,  392,  391,  394,  393,  390,
-      395,  397,  399,  389,  398,  395,  401,  400,  403,  401,
-      402,  396,  400,  398,  402,  406,  399,  404,  404,  407,
-
-      406,  408,  409,  407,  413,  410,  404,  416,  417,  403,
-      409,  418,  419,  421,  417,  418,  416,  419,  421,  408,
-      410,  413,  420,  423,  420,  422,  420,  424,  426,  420,
-      424,  425,  425,  432,  420,  426,  427,  427,  428,  430,
-      420,  420,  430,  422,  429,  429,  431,  433,  423,  434,
-      434,  121,  432,  428,  435,  433,  436,  437,  438,  438,
-      439,  440,  437,  439,  441,  442,  431,  440,  443,  435,
-      444,  445,  441,  442,  436,  444,  446,  446,  445,  447,
-      448,  449,  452,  453,  453,  448,  443,  447,  451,  456,
-      454,  451,  457,  454,  458,  459,  452,  461,  460,  462,
-
-      449,  454,  463,  462,  464,  466,  461,  465,  468,  467,
-      456,  469,  473,  457,  458,  467,  465,  459,  460,  466,
-      463,  470,  472,  464,  473,  469,  470,  471,  468,  474,
-      475,  471,  476,  476,  474,  477,  478,  479,  482,  478,
-      477,  472,  481,  480,  483,  483,  485,  481,  484,  484,
-      486,  475,  487,  488,  486,  479,  480,  492,  482,  489,
-      491,  485,  494,  495,  491,  493,  512,  502,  497,  512,
-      498,  487,  496,  489,  497,  498,  494,  488,  490,  502,
-      493,  490,  492,  490,  495,  501,  496,  490,  500,  490,
-      499,  499,  504,  500,  490,  505,  499,  504,  499,  501,
-
-      503,  503,  507,  505,  506,  508,  508,  509,  511,  513,
-      514,  509,  515,  511,  517,  516,  499,  515,  506,  519,
-      518,  507,  520,  514,  516,  518,  521,  522,  513,  524,
-      529,  529,  522,  517,  535,  521,  520,  525,  526,  519,
-      527,  528,  525,  526,  524,  527,  530,  536,  532,  535,
-      528,  530,  532,  532,  533,  533,  534,  537,  533,  534,
-      537,  538,  544,  539,  540,  541,  538,  536,  539,  543,
-      540,  541,  542,  542,  545,  546,  547,  545,  543,  548,
-      544,  549,  550,  551,  552,  554,  553,  550,  551,  553,
-      557,  559,  555,  546,  549,  547,  554,  555,  556,  548,
-
-      558,  558,  552,  556,  560,  557,  563,  561,  562,  565,
-      559,  564,  562,  566,  571,  569,  570,  572,  560,  561,
-      564,  573,  572,  575,  563,  574,  573,  576,  565,  569,
-      574,  570,  578,  579,  571,  577,  581,  575,  566,  584,
-      577,  576,  580,  580,  582,  583,  585,  578,  579,  586,
-      583,  585,  587,  582,  581,  588,  587,  589,  584,  590,
-      592,  591,  593,  594,  588,  595,  597,  596,  586,  598,
-      600,  595,  589,  591,  590,  600,  601,  602,  598,  592,
-      603,  594,  596,  593,  604,  602,  597,  605,  606,  604,
-      601,  605,  605,  607,  608,  609,  609,  613,  610,  608,
-
-      603,  606,  607,  610,  611,  612,  612,  614,  615,  611,
-      616,  613,  617,  615,  618,  616,  620,  617,  618,  619,
-      622,  623,  624,  626,  622,  614,  627,  620,  619,  625,
-      628,  629,  635,  619,  627,  619,  623,  619,  630,  630,
-      624,  637,  626,  625,  631,  631,  633,  634,  628,  633,
-      639,  635,  634,  636,  636,  639,  629,  638,  638,  640,
-      640,  637,  641,  642,  643,  644,  645,  646,  642,  647,
-      644,  654,  643,  646,  649,  650,  647,  655,  651,  649,
-      650,  652,  641,  651,  645,  653,  652,  657,  655,  658,
-      654,  656,  656,  659,  653,  660,  661,  667,  659,  662,
-
-      663,  663,  664,  665,  669,  666,  670,  657,  669,  669,
-      674,  671,  658,  672,  677,  660,  661,  662,  672,  673,
-      667,  675,  664,  666,  676,  675,  678,  999,  665,  671,
-      674,  679,  670,  677,  680,  686,  681,  673,  682,  683,
-      678,  681,  676,  684,  683,  682,  679,  685,  687,  688,
-      686,  999,  689,  680,  687,  690,  685,  689,  691,  695,
-      690,  684,  694,  691,  692,  692,  696,  694,  698,  698,
-      688,  697,  699,  695,  700,  697,  697,  701,  703,  702,
-      704,  705,  706,  701,  702,  696,  708,  711,  707,  709,
-      713,  699,  711,  700,  710,  710,  715,  703,  718,  704,
-
-      705,  706,  707,  713,  709,  712,  714,  708,  717,  712,
-      716,  716,  719,  717,  722,  714,  715,  719,  718,  722,
-      723,  723,  724,  726,  726,  728,  728,  724,  730,  731,
-      731,  730,  732,  733,  734,  735,  736,  736,  740,  734,
-      737,  738,  738,  739,  741,  742,  743,  732,  741,  740,
-      735,  743,  745,  746,  747,  747,  748,  749,  733,  750,
-      737,  751,  754,  751,  742,  739,  752,  746,  753,  755,
-      745,  752,  756,  753,  759,  758,  748,  749,  756,  750,
-      758,  760,  754,  755,  760,  761,  762,  762,  763,  764,
-      761,  765,  766,  767,  771,  768,  774,  766,  770,  759,
-
-      768,  769,  769,  770,  772,  773,  763,  775,  764,  776,
-      774,  765,  771,  777,  778,  779,  767,  780,  777,  775,
-      782,  781,  776,  784,  772,  773,  790,  782,  783,  787,
-      787,  794,  794,  789,  778,  779,  781,  783,  780,  784,
-      783,  788,  789,  791,  788,  790,  793,  792,  795,  796,
-      798,  793,  791,  797,  799,  791,  792,  800,  801,  801,
-      802,  805,  796,  803,  798,  806,  805,  807,  795,  808,
-      806,  797,  809,  807,  808,  800,  802,  810,  814,  799,
-      810,  803,  813,  815,  816,  809,  810,  818,  817,  820,
-      813,  814,  821,  822,  823,  824,  821,  825,  822,  823,
-
-      824,  815,  826,  816,  817,  818,  825,  827,  830,  820,
-      828,  828,  829,  832,  834,  831,  833,  835,  832,  840,
-      830,  841,  827,  835,  840,  826,  829,  831,  833,  836,
-      836,  838,  834,  837,  837,  839,  839,  842,  843,  845,
-      838,  854,  841,  844,  844,  846,  846,  847,  847,  848,
-      849,  852,  851,  849,  848,  853,  842,  851,  843,  845,
-      853,  855,  855,  856,  856,  857,  854,  858,  859,  852,
-      857,  860,  861,  862,  863,  863,  864,  865,  865,  858,
-      866,  858,  869,  871,  868,  873,  858,  870,  859,  869,
-      874,  860,  861,  868,  862,  878,  870,  872,  872,  876,
-
-      866,  882,  864,  877,  876,  879,  874,  883,  877,  871,
-      882,  873,  879,  880,  880,  878,  881,  884,  885,  886,
-      887,  881,  888,  889,  889,  886,  890,  883,  891,  887,
-      892,  895,  884,  888,  901,  892,  895,  885,  888,  893,
-      893,  894,  891,  896,  897,  894,  894,  890,  898,  897,
-      899,  900,  902,  903,  899,  896,  904,  902,  905,  901,
-      898,  904,  907,  900,  916,  907,  908,  908,  909,  909,
-      905,  910,  913,  911,  912,  903,  916,  910,  911,  919,
-      912,  913,  918,  918,  920,  926,  921,  923,  923,  928,
-      930,  927,  930,  920,  918,  921,  927,  919,  933,  926,
-
-      929,  929,  931,  931,  934,  933,  928,  935,  935,  936,
-      937,  938,  940,  939,  941,  943,  944,  945,  944,  946,
-      943,  948,  937,  938,  934,  939,  953,  940,  946,  954,
-      936,  947,  947,  949,  941,  945,  951,  950,  949,  950,
-      952,  951,  958,  955,  953,  952,  956,  948,  955,  954,
-      959,  956,  960,  960,  961,  965,  962,  964,  963,  968,
-      965,  958,  969,  970,  959,  962,  961,  963,  962,  964,
-      966,  972,  968,  975,  974,  966,  976,  972,  978,  970,
-      974,  980,  969,  977,  977,  976,  981,  978,  979,  979,
-      981,  982,  983,  984,  984,  985,  982,  988,  975,  991,
-
-      980,  989,  989,  985,  992,  983,  988,  990,  990,  992,
-      993,  991,  994,  995,  993,  996,  997, 1000,  995, 1001,
-     1002, 1003, 1005, 1005, 1007, 1006, 1008,  994, 1006, 1009,
-     1009, 1015, 1002, 1010, 1010,  997, 1000, 1007, 1012, 1008,
-     1001,  996, 1003, 1011, 1011, 1013, 1013, 1014, 1014, 1021,
-     1015, 1012, 1016, 1016, 1017, 1017, 1019, 1020, 1020, 1022,
-     1022, 1019, 1023, 1024, 1025, 1026, 1026, 1025, 1021, 1024,
-     1027, 1027, 1028, 1029, 1029, 1031, 1031, 1032, 1033, 1033,
-     1023, 1026, 1034, 1035, 1036, 1037, 1038, 1039, 1035, 1040,
-     1041, 1028, 1039, 1042, 1034, 1043, 1046, 1044, 1037, 1041,
-
-     1043, 1044, 1042, 1032, 1040, 1048, 1053, 1038, 1050, 1036,
-     1049, 1049, 1054, 1050, 1048, 1057, 1046, 1051, 1051, 1056,
-     1057, 1053, 1056, 1063, 1054, 1059, 1051, 1058, 1058, 1059,
-     1060, 1061, 1061, 1060, 1062, 1065, 1064, 1066, 1068, 1062,
-     1064, 1067, 1066, 1063, 1068, 1070, 1067, 1071, 1072, 1073,
-     1089, 1073, 1071, 1076, 1076, 1065, 1072, 1079, 1079, 1082,
-     1082, 1070, 1084, 1084, 1086, 1087, 1087, 1088, 1090, 1086,
-     1092, 1092, 1089, 1090, 1095, 1096, 1097, 1096, 1101, 1095,
-     1102, 1097, 1103, 1088, 1098, 1098, 1099, 1099, 1100, 1100,
-     1101, 1104, 1105, 1106, 1103, 1107, 1107, 1108, 1102, 1109,
-
-     1110, 1111, 1112, 1104, 1105, 1113, 1108, 1115,  119, 1114,
-     1116, 1119, 1115, 1106, 1111, 1116, 1117, 1117, 1124, 1113,
-     1110, 1120, 1120, 1122, 1122, 1109, 1112, 1114, 1123, 1119,
-     1125, 1126, 1128, 1124, 1127, 1129, 1129, 1123, 1130, 1131,
-     1132, 1133, 1137, 1130, 1138, 1139, 1139, 1138, 1125, 1126,
-     1127, 1128, 1140, 1141, 1131, 1143, 1143, 1144, 1150, 1132,
-     1151, 1133, 1137, 1145, 1145, 1149, 1149, 1140, 1152, 1151,
-     1153, 1141, 1156, 1152, 1154, 1153, 1144, 1159, 1157, 1158,
-     1150,   67, 1154, 1157, 1158, 1160, 1160, 1156, 1161, 1161,
-     1162, 1176, 1159, 1163, 1163, 1162, 1164, 1164, 1166, 1167,
-
-     1170, 1169, 1177, 1166, 1169, 1171, 1172, 1173, 1173, 1174,
-     1176, 1167, 1180, 1170, 1171, 1172, 1178, 1178, 1174, 1179,
-     1180, 1177, 1181, 1183, 1184, 1186, 1186, 1181, 1179, 1188,
-     1189, 1189, 1183, 1190, 1191, 1191, 1190, 1184, 1192, 1192,
-     1193, 1194, 1195, 1196, 1196, 1200, 1197, 1195, 1203, 1188,
-     1197, 1200, 1204, 1205, 1207, 1194, 1206, 1206, 1193, 1208,
-     1204, 1209, 1210, 1212, 1208, 1211, 1214, 1203, 1215, 1214,
-     1207, 1218, 1205, 1217, 1211, 1216, 1216, 1217, 1220, 1221,
-     1218, 1209, 1222, 1212, 1225, 1227, 1215, 1220, 1210, 1225,
-     1229, 1221, 1226, 1226, 1227, 1229, 1230, 1231, 1232, 1233,
-
-     1233, 1234, 1235, 1236, 1237, 1230, 1238, 1222, 1239, 1240,
-     1234, 1238, 1237, 1232, 1241, 1241, 1231, 1245, 1235, 1242,
-     1244, 1244, 1236, 1246, 1242, 1247, 1247, 1249, 1240, 1248,
-     1248, 1250, 1251, 1257, 1239, 1252, 1252, 1245, 1253, 1254,
-     1254, 1255, 1307, 1250, 1258, 1246, 1249, 1257,   61, 1258,
-     1253, 1307, 1251, 1259, 1259, 1260, 1260, 1261, 1261, 1262,
-     1255, 1263, 1263, 1271, 1262, 1265, 1265, 1267, 1267, 1268,
-     1273, 1271, 1272, 1272, 1268, 1273, 1275, 1277, 1278, 1278,
-     1279, 1275, 1283, 1283, 1279, 1285, 1287, 1287, 1288, 1285,
-     1290, 1291, 1291, 1292, 1292, 1294, 1294, 1277, 1296, 1296,
-
-     1298, 1299, 1299, 1288, 1305, 1304, 1306, 1306, 1290, 1304,
-     1309, 1311, 1298, 1310, 1312, 1312,   56,   51,   50,   45,
-       40,   14,   13,    0, 1305, 1309,    0, 1310,    0,    0,
-     1311, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1316, 1316,
-     1316, 1316, 1316, 1316, 1316, 1317, 1317, 1317, 1317, 1317,
-     1317, 1317, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1319,
-     1319, 1319, 1319, 1319, 1319, 1319, 1321, 1321,    0, 1321,
-     1321, 1321, 1321, 1322, 1322,    0,    0,    0, 1322, 1322,
-     1323, 1323,    0,    0, 1323,    0, 1323, 1324,    0,    0,
-        0,    0,    0, 1324, 1325, 1325,    0,    0,    0, 1325,
-
-     1325, 1326,    0,    0,    0,    0,    0, 1326, 1327, 1327,
-        0, 1327, 1327, 1327, 1327, 1328, 1328,    0, 1328, 1328,
-     1328, 1328, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
-     1314, 1314
+       79,   37,   37,   36,   37,   78,  577,   36,   36,   88,
+       38,   39,   39,   88,   79,   38,   39,   76,   55,   37,
+
+       55,   55,   63,   55,   63,   63,   65,   63,   65,   65,
+       82,   65,   68,   63,   68,   68,   85,   68,   80,   81,
+       86,   84,   68,   71,   83,   71,   71,   87,   71,   83,
+       80,   92,   82,   71,   71,   84,   85,   81,   86,   90,
+       91,   98,   83,   91,   93,   87,   91,   95,   94,   93,
+       92,   94,   96,   90,   98,   94,   96,   97,   99,  100,
+       91,   95,  101,  102,   97,   99,  103,  102,  104,   93,
+      105,  107,  100,  104,  106,  108,  110,  104,  109,  111,
+      113,  110,  101,  114,  103,  115,  107,  106,  112,  112,
+      105,  111,  117,  118,  108,  119,  109,  117,  113,  114,
+
+      121,  121,  128,  128,  123,  118,  115,  123,  133,  112,
+      129,  133,  125,  119,  125,  125,  130,  125,  130,  130,
+      131,  130,  131,  131,  134,  131,  136,  135,  137,  134,
+      138,  131,  135,  139,  140,  141,  137,  142,  145,  140,
+      141,  136,  142,  144,  144,  138,  146,  147,  148,  151,
+      149,  146,  148,  139,  143,  149,  154,  145,  143,  150,
+      153,  154,  155,  143,  151,  152,  157,  156,  143,  161,
+      147,  157,  127,  150,  143,  143,  159,  152,  153,  160,
+      152,  159,  155,  156,  158,  158,  162,  159,  160,  163,
+      161,  162,  164,  165,  163,  166,  168,  164,  165,  167,
+
+      169,  170,  166,  171,  172,  167,  169,  173,  174,  175,
+      176,  171,  177,  174,  178,  180,  168,  177,  179,  172,
+      179,  181,  180,  170,  182,  184,  181,  173,  176,  176,
+      184,  175,  183,  183,  178,  185,  186,  187,  186,  188,
+      185,  190,  189,  182,  192,  193,  190,  191,  184,  187,
+      189,  195,  191,  194,  195,  186,  196,  196,  188,  192,
+      198,  194,  199,  193,  197,  197,  200,  201,  203,  200,
+      202,  201,  204,  203,  205,  205,  198,  199,  206,  202,
+      207,  208,  209,  206,  210,  207,  204,  212,  212,  211,
+      213,  214,  215,  216,  217,  218,  216,  215,  219,  221,
+
+      209,  208,  211,  214,  220,  210,  217,  219,  213,  223,
+      223,  221,  218,  225,  226,  218,  222,  220,  222,  222,
+      224,  229,  227,  224,  228,  228,  229,  230,  230,  226,
+      225,  227,  231,  225,  232,  233,  234,  235,  236,  237,
+      233,  236,  235,  238,  240,  241,  239,  231,  242,  240,
+      241,  243,  244,  237,  232,  239,  234,  245,  246,  238,
+      245,  249,  238,  248,  238,  250,  244,  252,  251,  242,
+      249,  243,  246,  126,  253,  255,  245,  247,  248,  247,
+      247,  258,  252,  254,  256,  257,  250,  251,  254,  247,
+      259,  247,  247,  247,  253,  255,  247,  260,  262,  256,
+
+      257,  258,  260,  263,  259,  261,  261,  264,  261,  266,
+      265,  266,  267,  268,  269,  124,  267,  270,  262,  263,
+      271,  273,  272,  264,  265,  273,  270,  272,  269,  271,
+      275,  268,  274,  277,  276,  275,  278,  281,  277,  270,
+      276,  274,  279,  279,  282,  280,  286,  283,  290,  278,
+      280,  284,  284,  282,  293,  285,  287,  287,  281,  283,
+      285,  289,  289,  291,  292,  295,  293,  286,  296,  290,
+      297,  291,  298,  292,  299,  300,  301,  298,  302,  303,
+      300,  304,  299,  303,  297,  295,  305,  306,  296,  307,
+      310,  305,  309,  312,  301,  314,  304,  311,  313,  313,
+
+      302,  316,  311,  306,  315,  315,  310,  311,  307,  308,
+      308,  317,  309,  312,  318,  308,  316,  308,  319,  320,
+      314,  321,  322,  317,  323,  308,  321,  324,  325,  318,
+      328,  322,  325,  326,  327,  308,  329,  319,  326,  330,
+      330,  320,  324,  323,  331,  332,  327,  333,  328,  329,
+      334,  335,  342,  334,  336,  336,  331,  332,  337,  337,
+      338,  348,  333,  122,  335,  338,  339,  339,  340,  340,
+      341,  343,  345,  342,  344,  341,  343,  345,  344,  346,
+      347,  348,  349,  346,  350,  347,  351,  349,  355,  350,
+      352,  353,  353,  352,  354,  359,  367,  355,  352,  354,
+
+      351,  356,  352,  357,  356,  358,  360,  357,  359,  361,
+      358,  360,  362,  363,  367,  364,  368,  362,  364,  363,
+      365,  361,  366,  365,  374,  370,  369,  366,  370,  357,
+      368,  369,  371,  374,  372,  373,  379,  371,  372,  372,
+      373,  375,  376,  377,  375,  377,  376,  376,  378,  380,
+      378,  381,  382,  383,  379,  384,  385,  383,  386,  375,
+      387,  388,  389,  394,  384,  120,  388,  380,  390,  390,
+      381,  385,  382,  391,  392,  387,  386,  391,  393,  392,
+      395,  389,  394,  396,  397,  398,  399,  401,  403,  397,
+      396,  399,  398,  395,  393,  400,  402,  403,  404,  405,
+
+      400,  408,  418,  402,  405,  401,  406,  407,  411,  406,
+      413,  407,  404,  411,  409,  409,  412,  414,  415,  418,
+      412,  421,  408,  409,  424,  414,  422,  423,  413,  424,
+      421,  423,  422,  415,  425,  426,  425,  427,  425,  428,
+      426,  425,  429,  430,  430,  429,  425,  431,  432,  432,
+      433,  436,  425,  425,  431,  427,  434,  434,  435,  437,
+      438,  435,  439,  439,  428,  433,  440,  441,  438,  442,
+      444,  436,  443,  443,  442,  444,  445,  446,  437,  445,
+      447,  440,  448,  446,  449,  441,  450,  451,  447,  453,
+      448,  450,  452,  452,  451,  454,  455,  453,  457,  458,
+
+      454,  457,  449,  459,  459,  460,  461,  463,  464,  461,
+      465,  466,  467,  458,  468,  455,  470,  461,  469,  471,
+      460,  474,  469,  468,  475,  473,  472,  474,  463,  464,
+      465,  476,  467,  466,  470,  472,  477,  479,  471,  473,
+      480,  477,  478,  481,  475,  476,  478,  482,  481,  483,
+      483,  485,  480,  484,  485,  486,  479,  487,  484,  488,
+      489,  490,  490,  492,  488,  491,  491,  493,  482,  494,
+      487,  493,  495,  486,  499,  496,  500,  498,  492,  501,
+      489,  498,  502,  509,  503,  505,  504,  508,  494,  496,
+      505,  500,  504,  501,   67,  509,  495,  497,  503,  499,
+
+      497,  508,  497,  502,  506,  506,  497,  513,  497,  507,
+      506,  512,  506,  497,  507,  510,  510,  511,  514,  512,
+      520,  513,  511,  515,  515,  516,  518,  521,  522,  516,
+      506,  518,  519,  522,  523,  519,  524,  514,  526,  520,
+      521,  525,  527,  523,  528,  529,  525,  531,  532,  533,
+      529,  536,  534,  528,  533,  524,  527,  534,  526,  535,
+      536,  537,  537,  532,  535,  531,  538,  542,  540,  543,
+      542,  538,  540,  540,  541,  541,  544,  545,  541,  546,
+      545,  547,  548,  549,  543,  550,  547,  548,  552,  549,
+      553,  550,  551,  551,  555,  554,  544,  552,  554,  556,
+
+      546,  557,  558,   61,  559,  560,  561,  568,  553,  559,
+      560,  562,  555,  566,  562,  558,  563,  564,  556,  569,
+      565,  557,  564,  570,  561,  565,  568,  563,  566,  567,
+      567,  572,  571,  569,  573,  570,  571,  574,  575,  578,
+      579,  580,  581,  573,  584,  582,  583,  581,  585,  572,
+      582,  583,  586,  578,  587,  579,  574,  586,  584,  588,
+      590,  580,  585,  575,  589,  589,  591,  592,  593,  587,
+      595,  594,  592,  596,  588,  591,  594,  596,  590,  597,
+      598,  599,  600,  601,  602,  603,  604,  593,  597,  595,
+      606,  605,  604,  611,  600,  598,  599,  610,  607,  609,
+
+      612,  611,  601,  603,  609,  602,  605,  607,  613,  615,
+      606,  610,  614,  613,  616,  644,  614,  614,  644,  617,
+      612,  623,  615,  616,  617,  618,  618,  619,  620,  621,
+      621,  622,  619,  620,  624,  623,  622,  625,  626,  627,
+      629,  628,  625,  626,  627,  628,  630,  632,  633,  629,
+      634,  632,  624,  635,  629,  636,  629,  630,  629,  638,
+      639,  637,  640,  633,  641,  641,  646,  635,  634,  637,
+      642,  642,  645,  638,  636,  647,  647,  645,  639,  648,
+      649,  649,  652,  650,  654,  646,  653,  640,  650,  651,
+      651,  653,  654,  655,  656,  657,  658,  669,  655,  648,
+
+      660,  657,  652,  658,  661,  660,  662,  664,  663,  661,
+      665,  662,  656,  663,  666,  668,  664,  667,  667,  670,
+      669,  671,  672,  675,  670,  666,  673,  674,  674,  665,
+      676,  677,  680,  678,  681,  668,  680,  680,  685,  682,
+      683,  671,  672,  675,  673,  683,  684,  686,  687,  677,
+      688,  686,  691,  689,  693,  676,  678,  682,  685,  690,
+      681,  693,  695,  692,  684,  694,  687,  689,  692,  688,
+      694,  691,  696,  697,  690,  699,  698,  706,  700,  701,
+      695,  696,  698,  700,  701,  702,  703,  703,  697,  705,
+      702,  706,  707,  708,  705,  710,  699,  708,  708,  709,
+
+      709,  711,  712,  713,  715,  714,  716,  717,  718,  713,
+      714,  707,  720,  721,  710,  719,  722,  722,  724,  723,
+      711,  712,  724,  715,  723,  716,  717,  718,  721,  719,
+      725,  726,  727,  720,  728,  728,  729,  731,  730,  732,
+      726,  729,  730,  725,  732,  735,  736,  736,  737,  745,
+      735,  746,  727,  737,  739,  739,  748,  731,  741,  741,
+      743,  744,  744,  743,  745,  747,  749,  749,  750,  752,
+      747,  748,  751,  751,  753,  754,  746,  755,  756,  754,
+      758,  759,  761,  756,  762,  753,  760,  760,  750,  763,
+      764,  752,  764,  767,  765,  759,  755,  768,  758,  765,
+
+      766,  769,  761,  771,  762,  766,  772,  769,  771,  763,
+      776,  768,  773,  767,  774,  773,  775,  775,  777,  774,
+      778,  779,  780,  784,  781,  783,  779,  785,  776,  781,
+      783,  772,  782,  782,  786,  787,  788,  777,  789,  790,
+      778,  784,  791,  792,  790,  780,  793,  785,  788,  787,
+      794,  789,  795,  801,  786,  797,  801,  796,  802,  795,
+      800,  800,  791,  792,  803,  794,  796,  793,  804,  796,
+      805,  797,  806,  803,  802,  807,  808,  808,  809,  805,
+      807,  806,  805,  810,  811,  812,  813,  804,  814,  815,
+      815,  816,  817,   56,  820,  819,  810,  828,  809,  812,
+
+      819,  824,  811,  821,  829,  828,  814,  816,  821,  822,
+      817,  813,  820,  823,  824,  822,  825,  829,  823,  825,
+      830,  831,  841,  832,  833,  825,  835,  836,  837,  838,
+      839,  836,  840,  837,  838,  839,  842,  845,  830,  832,
+      831,  840,  833,  843,  843,  841,  835,  844,  846,  845,
+      847,  842,  848,  849,  853,  847,  850,  851,  851,  856,
+      846,  844,  850,  853,  848,  852,  852,  854,  854,  855,
+      857,  849,  858,  860,  855,  859,  859,  861,  861,  863,
+      856,  862,  862,  864,  863,  866,  864,  867,  869,  857,
+      866,  868,  858,  860,  870,  870,  868,  871,  871,  872,
+
+      873,  874,  875,  876,  872,  867,  877,  878,  878,  879,
+      880,  880,  873,  869,  873,  883,  881,  884,  885,  873,
+      886,  874,  875,  876,  883,  885,  887,  877,  889,  886,
+      888,  888,  884,  890,  892,  879,  881,  893,  894,  892,
+      895,  897,  893,  896,  896,  899,  897,  895,  898,  890,
+      901,  900,  887,  902,  889,  903,  905,  898,  894,  906,
+      906,  903,  904,  907,  908,  899,  900,  905,  902,  901,
+      909,  904,  905,  910,  910,  909,  911,  912,  908,  913,
+      911,  911,  912,  914,  907,  915,  916,  917,  914,  918,
+      916,  913,  922,  919,  920,  921,  928,  915,  919,  917,
+
+      921,  928,  924,  933,  922,  924,  925,  925,  926,  926,
+      930,  927,  929,  936,  918,  933,  920,  927,  929,  930,
+      935,  935,  940,  940,  937,  938,  943,  945,  946,  946,
+      944,  936,  935,  937,  938,  944,  947,  951,  947,  950,
+      943,  948,  948,  953,  945,  957,  950,  952,  952,  954,
+      955,  956,  958,  960,  961,  962,  961,  951,  960,  963,
+      957,  954,  955,  956,  953,  964,  965,  965,  963,  966,
+      967,  971,  958,  962,  968,  967,  968,  969,  970,  964,
+      972,  973,  969,  970,  976,  974,  973,  977,   51,  971,
+      974,  978,  978,  979,  981,  966,  981,  980,  982,  983,
+
+      972,  977,  988,  976,  987,  979,  980,  982,  984,  980,
+      985,  983,  989,  984,  991,  985,  994,  987,  993,  999,
+      991,  995,  988,  997,  993,  996,  996, 1000,  989, 1002,
+      995, 1000,  997,  998,  998, 1001, 1003, 1003,  999, 1004,
+     1001,  994, 1002, 1007, 1008, 1008, 1010, 1004, 1009, 1009,
+     1011, 1013, 1007, 1012, 1014, 1011, 1015, 1012, 1010, 1014,
+     1016, 1018, 1019, 1020, 1021, 1022, 1013, 1024, 1024, 1025,
+     1026, 1065, 1025, 1034, 1027, 1065, 1021, 1028, 1028, 1016,
+     1031, 1019, 1015, 1026, 1020, 1018, 1022, 1027, 1029, 1029,
+     1030, 1030, 1034, 1031, 1032, 1032, 1033, 1033, 1035, 1035,
+
+     1036, 1036, 1037, 1039, 1040, 1040, 1041, 1044, 1039, 1042,
+     1042, 1043, 1045, 1044, 1048, 1045, 1046, 1046, 1047, 1047,
+     1052, 1037, 1049, 1049, 1055, 1041, 1051, 1051, 1054, 1043,
+     1053, 1053, 1046, 1048, 1056, 1057, 1055, 1054, 1058, 1056,
+     1059, 1061, 1060, 1062, 1063, 1064, 1052, 1060, 1067, 1069,
+     1064, 1058, 1062, 1063, 1070, 1070, 1061, 1071, 1069, 1074,
+     1057, 1059, 1071, 1072, 1072, 1075, 1077, 1080, 1067, 1077,
+     1078, 1080, 1072, 1081, 1074, 1078, 1081, 1075, 1079, 1079,
+     1082, 1082, 1083, 1084, 1085, 1086, 1087, 1083, 1085, 1088,
+     1089, 1087, 1091, 1092, 1088, 1094, 1089, 1094, 1092, 1093,
+
+     1097, 1097, 1111, 1084, 1110, 1086, 1103, 1093, 1091, 1100,
+     1100, 1103, 1104, 1104, 1106, 1106, 1108, 1109, 1109, 1119,
+     1110, 1108, 1112, 1117, 1111, 1114, 1114, 1112, 1117, 1118,
+     1120, 1118, 1124, 1119, 1125, 1120, 1121, 1121, 1122, 1122,
+     1123, 1123, 1126, 1127, 1124, 1128, 1129, 1130, 1130, 1131,
+     1132, 1133, 1125, 1135, 1126, 1127, 1134, 1128, 1131, 1136,
+     1137, 1142, 1138, 1139, 1140, 1140, 1129, 1138, 1139, 1134,
+     1147, 1133, 1148, 1136, 1143, 1143, 1132, 1135, 1137, 1142,
+     1145, 1145, 1146, 1149, 1150, 1147, 1151, 1152, 1152, 1153,
+     1148, 1146, 1154, 1155, 1153, 1156, 1162, 1158, 1161, 1162,
+
+     1150, 1149, 1163, 1163, 1164, 1151, 1165, 1154, 1167, 1167,
+     1168, 1175, 1155, 1169, 1169, 1156, 1158, 1176, 1161, 1164,
+     1170, 1170, 1174, 1174, 1165, 1177, 1176, 1178, 1179, 1168,
+     1177, 1181, 1178, 1175, 1182, 1183, 1179, 1184,   50, 1182,
+     1183, 1185, 1185, 1186, 1186, 1187, 1181, 1188, 1188, 1192,
+     1187, 1191, 1184, 1189, 1189, 1194, 1191, 1195, 1194, 1196,
+     1197, 1192, 1198, 1198, 1199, 1201, 1202, 1204, 1196, 1197,
+     1195, 1203, 1203, 1199, 1205, 1205, 1204, 1207, 1206, 1209,
+     1210, 1215, 1207,   45, 1201, 1202, 1206, 1220, 1209, 1212,
+     1212, 1216, 1216, 1210, 1217, 1218, 1218, 1217, 1219, 1219,
+
+     1221, 1215, 1222, 1223, 1223, 1220, 1224, 1222, 1230, 1227,
+     1224, 1231, 1232, 1234, 1221, 1227, 1233, 1233, 1235, 1231,
+     1236, 1237, 1239, 1235, 1238, 1241, 1243, 1230, 1241, 1234,
+     1246, 1232, 1245, 1238, 1244, 1244, 1245, 1248, 1249, 1246,
+     1236, 1250, 1239, 1253, 1243, 1255, 1248, 1237, 1253, 1259,
+     1249, 1254, 1254, 1257, 1255, 1258, 1260, 1263, 1257, 1261,
+     1261, 1262, 1264, 1267, 1258, 1268, 1250, 1265, 1259, 1266,
+     1262, 1260, 1273, 1263, 1266, 1265, 1269, 1269, 1270, 1272,
+     1272, 1264, 1274, 1270, 1268, 1275, 1275, 1276, 1276, 1267,
+     1277, 1278, 1273, 1279, 1280, 1280, 1281, 1282, 1282, 1283,
+
+     1285, 1286, 1290, 1278, 1274,   40, 1286, 1290, 1281, 1277,
+     1287, 1287, 1296, 1279, 1285, 1288, 1288, 1296, 1283, 1289,
+     1289, 1291, 1291, 1293, 1293, 1295, 1295, 1299, 1300, 1300,
+     1305, 1301, 1303, 1306, 1306, 1299, 1301, 1303, 1307, 1311,
+     1311, 1313, 1307, 1315, 1315, 1313, 1316, 1318, 1319, 1319,
+     1305, 1320, 1320, 1322, 1322, 1324, 1324, 1326, 1327, 1327,
+     1332, 1316, 1333, 1335, 1332, 1318, 1334, 1334, 1337, 1326,
+     1338, 1339, 1335, 1340, 1340,   14,   13,    0,    0,    0,
+        0,    0, 1333, 1337, 1338,    0,    0,    0,    0,    0,
+     1339, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1344, 1344,
+
+     1344, 1344, 1344, 1344, 1344, 1345, 1345, 1345, 1345, 1345,
+     1345, 1345, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1347,
+     1347, 1347, 1347, 1347, 1347, 1347, 1349, 1349,    0, 1349,
+     1349, 1349, 1349, 1350, 1350,    0,    0,    0, 1350, 1350,
+     1351, 1351,    0,    0, 1351,    0, 1351, 1352,    0,    0,
+        0,    0,    0, 1352, 1353, 1353,    0,    0,    0, 1353,
+     1353, 1354,    0,    0,    0,    0,    0, 1354, 1355, 1355,
+        0, 1355, 1355, 1355, 1355, 1356, 1356,    0, 1356, 1356,
+     1356, 1356, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1575,7 +1598,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1577 "<stdout>"
+#line 1600 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -1762,7 +1785,7 @@ YY_DECL
     
 #line 120 "./util/configlexer.lex"
 
-#line 1764 "<stdout>"
+#line 1787 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -1821,13 +1844,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 >= 1315 )
+                               if ( yy_current_state >= 1343 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 2623 );
+               while ( yy_base[yy_current_state] != 2683 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2451,40 +2474,50 @@ YY_RULE_SETUP
 { YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 120:
-/* rule 120 can match eol */
 YY_RULE_SETUP
 #line 244 "./util/configlexer.lex"
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+       YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 245 "./util/configlexer.lex"
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+       YY_BREAK
+case 122:
+/* rule 122 can match eol */
+YY_RULE_SETUP
+#line 246 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 121:
+case 123:
 YY_RULE_SETUP
-#line 247 "./util/configlexer.lex"
+#line 249 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 248 "./util/configlexer.lex"
+#line 250 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 122:
+case 124:
 YY_RULE_SETUP
-#line 253 "./util/configlexer.lex"
+#line 255 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 123:
-/* rule 123 can match eol */
+case 125:
+/* rule 125 can match eol */
 YY_RULE_SETUP
-#line 254 "./util/configlexer.lex"
+#line 256 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 124:
+case 126:
 YY_RULE_SETUP
-#line 256 "./util/configlexer.lex"
+#line 258 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2497,34 +2530,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 125:
+case 127:
 YY_RULE_SETUP
-#line 268 "./util/configlexer.lex"
+#line 270 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 269 "./util/configlexer.lex"
+#line 271 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 274 "./util/configlexer.lex"
+#line 276 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 127:
-/* rule 127 can match eol */
+case 129:
+/* rule 129 can match eol */
 YY_RULE_SETUP
-#line 275 "./util/configlexer.lex"
+#line 277 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 277 "./util/configlexer.lex"
+#line 279 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2537,38 +2570,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 289 "./util/configlexer.lex"
+#line 291 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 291 "./util/configlexer.lex"
+#line 293 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 295 "./util/configlexer.lex"
+#line 297 "./util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
-case 131:
-/* rule 131 can match eol */
+case 133:
+/* rule 133 can match eol */
 YY_RULE_SETUP
-#line 296 "./util/configlexer.lex"
+#line 298 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 297 "./util/configlexer.lex"
+#line 299 "./util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 298 "./util/configlexer.lex"
+#line 300 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -2576,27 +2609,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 303 "./util/configlexer.lex"
+#line 305 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 307 "./util/configlexer.lex"
+#line 309 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 135:
-/* rule 135 can match eol */
+case 137:
+/* rule 137 can match eol */
 YY_RULE_SETUP
-#line 308 "./util/configlexer.lex"
+#line 310 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 310 "./util/configlexer.lex"
+#line 312 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -2606,7 +2639,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 316 "./util/configlexer.lex"
+#line 318 "./util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -2617,33 +2650,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 326 "./util/configlexer.lex"
+#line 328 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 330 "./util/configlexer.lex"
+#line 332 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 334 "./util/configlexer.lex"
+#line 336 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 338 "./util/configlexer.lex"
+#line 340 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 2645 "<stdout>"
+#line 2678 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2933,7 +2966,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 >= 1315 )
+                       if ( yy_current_state >= 1343 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2961,11 +2994,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 >= 1315 )
+               if ( yy_current_state >= 1343 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1314);
+       yy_is_jam = (yy_current_state == 1342);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3602,7 +3635,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 338 "./util/configlexer.lex"
+#line 340 "./util/configlexer.lex"
 
 
 
index ab934bc3c2b24f4936198de193c697567762aa83..ed808aafc3931bcb3cc4f6e39b10370d725bd7a5 100644 (file)
@@ -241,6 +241,8 @@ control-cert-file{COLON}    { YDVAR(1, VAR_CONTROL_CERT_FILE) }
 python-script{COLON}           { YDVAR(1, VAR_PYTHON_SCRIPT) }
 python{COLON}                  { YDVAR(0, VAR_PYTHON) }
 domain-insecure{COLON}         { YDVAR(1, VAR_DOMAIN_INSECURE) }
+minimal-responses{COLON}       { YDVAR(1, VAR_MINIMAL_RESPONSES) }
+rrset-roundrobin{COLON}                { YDVAR(1, VAR_RRSET_ROUNDROBIN) }
 <INITIAL,val>{NEWLINE}         { LEXOUT(("NL\n")); cfg_parser->line++; }
 
        /* Quoted strings. Strip leading and ending quotes */
index 913163233b7be26ccdde949faad9f7cd918e8740..e700487d7afe6bdd670165df44f66c4e4c5920df 100644 (file)
@@ -246,7 +246,9 @@ extern struct config_parser_state* cfg_parser;
      VAR_SSL_SERVICE_PEM = 379,
      VAR_SSL_PORT = 380,
      VAR_FORWARD_FIRST = 381,
-     VAR_STUB_FIRST = 382
+     VAR_STUB_FIRST = 382,
+     VAR_MINIMAL_RESPONSES = 383,
+     VAR_RRSET_ROUNDROBIN = 384
    };
 #endif
 /* Tokens.  */
@@ -375,6 +377,8 @@ extern struct config_parser_state* cfg_parser;
 #define VAR_SSL_PORT 380
 #define VAR_FORWARD_FIRST 381
 #define VAR_STUB_FIRST 382
+#define VAR_MINIMAL_RESPONSES 383
+#define VAR_RRSET_ROUNDROBIN 384
 
 
 
@@ -391,7 +395,7 @@ typedef union YYSTYPE
 
 
 /* Line 293 of yacc.c  */
-#line 395 "util/configparser.c"
+#line 399 "util/configparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -403,7 +407,7 @@ typedef union YYSTYPE
 
 
 /* Line 343 of yacc.c  */
-#line 407 "util/configparser.c"
+#line 411 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -622,20 +626,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   233
+#define YYLAST   237
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  128
+#define YYNTOKENS  130
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  131
+#define YYNNTS  133
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  249
+#define YYNRULES  253
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  365
+#define YYNSTATES  371
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   382
+#define YYMAXUTOK   384
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -681,7 +685,7 @@ static const yytype_uint8 yytranslate[] =
       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,   121,   122,   123,   124,
-     125,   126,   127
+     125,   126,   127,   128,   129
 };
 
 #if YYDEBUG
@@ -700,87 +704,89 @@ static const yytype_uint16 yyprhs[] =
      164,   166,   168,   170,   172,   174,   176,   178,   180,   182,
      184,   186,   188,   190,   192,   194,   196,   198,   200,   202,
      204,   206,   208,   210,   212,   214,   216,   218,   220,   222,
-     225,   226,   228,   230,   232,   234,   236,   238,   241,   242,
-     244,   246,   248,   250,   253,   256,   259,   262,   265,   268,
-     271,   274,   277,   280,   283,   286,   289,   292,   295,   298,
-     301,   304,   307,   310,   313,   316,   319,   322,   325,   328,
-     331,   334,   337,   340,   343,   346,   349,   352,   355,   358,
-     361,   364,   367,   370,   373,   376,   379,   382,   385,   388,
-     391,   394,   397,   400,   403,   406,   409,   412,   415,   418,
-     421,   424,   427,   430,   433,   436,   439,   442,   445,   448,
-     451,   454,   457,   460,   463,   466,   469,   472,   476,   479,
-     482,   485,   488,   491,   494,   497,   500,   503,   506,   509,
-     512,   515,   518,   521,   524,   527,   530,   534,   537,   540,
-     543,   546,   549,   552,   555,   558,   561,   564,   567,   569,
-     572,   573,   575,   577,   579,   581,   583,   585,   587,   590,
-     593,   596,   599,   602,   605,   608,   610,   613,   614,   616
+     224,   226,   229,   230,   232,   234,   236,   238,   240,   242,
+     245,   246,   248,   250,   252,   254,   257,   260,   263,   266,
+     269,   272,   275,   278,   281,   284,   287,   290,   293,   296,
+     299,   302,   305,   308,   311,   314,   317,   320,   323,   326,
+     329,   332,   335,   338,   341,   344,   347,   350,   353,   356,
+     359,   362,   365,   368,   371,   374,   377,   380,   383,   386,
+     389,   392,   395,   398,   401,   404,   407,   410,   413,   416,
+     419,   422,   425,   428,   431,   434,   437,   440,   443,   446,
+     449,   452,   455,   458,   461,   464,   467,   470,   473,   476,
+     480,   483,   486,   489,   492,   495,   498,   501,   504,   507,
+     510,   513,   516,   519,   522,   525,   528,   531,   534,   538,
+     541,   544,   547,   550,   553,   556,   559,   562,   565,   568,
+     571,   574,   577,   579,   582,   583,   585,   587,   589,   591,
+     593,   595,   597,   600,   603,   606,   609,   612,   615,   618,
+     620,   623,   624,   626
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     129,     0,    -1,    -1,   129,   130,    -1,   131,   132,    -1,
-     134,   135,    -1,   137,   138,    -1,   255,   256,    -1,   245,
-     246,    -1,    11,    -1,   132,   133,    -1,    -1,   140,    -1,
-     141,    -1,   145,    -1,   148,    -1,   154,    -1,   155,    -1,
-     156,    -1,   157,    -1,   146,    -1,   167,    -1,   168,    -1,
-     169,    -1,   170,    -1,   171,    -1,   188,    -1,   189,    -1,
-     190,    -1,   192,    -1,   193,    -1,   151,    -1,   194,    -1,
-     195,    -1,   198,    -1,   196,    -1,   197,    -1,   199,    -1,
-     200,    -1,   201,    -1,   212,    -1,   180,    -1,   181,    -1,
-     182,    -1,   183,    -1,   202,    -1,   215,    -1,   176,    -1,
-     178,    -1,   216,    -1,   221,    -1,   222,    -1,   223,    -1,
-     152,    -1,   187,    -1,   230,    -1,   231,    -1,   177,    -1,
-     226,    -1,   164,    -1,   147,    -1,   172,    -1,   213,    -1,
-     219,    -1,   203,    -1,   214,    -1,   233,    -1,   234,    -1,
-     153,    -1,   142,    -1,   163,    -1,   206,    -1,   143,    -1,
-     149,    -1,   150,    -1,   173,    -1,   174,    -1,   232,    -1,
-     205,    -1,   207,    -1,   208,    -1,   144,    -1,   235,    -1,
-     191,    -1,   211,    -1,   165,    -1,   179,    -1,   217,    -1,
-     218,    -1,   220,    -1,   225,    -1,   175,    -1,   227,    -1,
-     228,    -1,   229,    -1,   184,    -1,   186,    -1,   209,    -1,
-     210,    -1,   185,    -1,   204,    -1,   224,    -1,   166,    -1,
-     158,    -1,   159,    -1,   160,    -1,   161,    -1,   162,    -1,
-      38,    -1,   135,   136,    -1,    -1,   236,    -1,   237,    -1,
-     238,    -1,   240,    -1,   239,    -1,    44,    -1,   138,   139,
-      -1,    -1,   241,    -1,   242,    -1,   243,    -1,   244,    -1,
-      13,    10,    -1,    12,    10,    -1,    76,    10,    -1,    79,
-      10,    -1,    96,    10,    -1,    14,    10,    -1,    16,    10,
-      -1,    67,    10,    -1,    15,    10,    -1,    80,    10,    -1,
-      81,    10,    -1,    31,    10,    -1,    60,    10,    -1,    75,
-      10,    -1,    17,    10,    -1,    18,    10,    -1,    19,    10,
-      -1,    20,    10,    -1,   121,    10,    -1,   122,    10,    -1,
-     123,    10,    -1,   124,    10,    -1,   125,    10,    -1,    77,
-      10,    -1,    66,    10,    -1,   101,    10,    -1,   120,    10,
-      -1,    21,    10,    -1,    22,    10,    -1,    23,    10,    -1,
-      24,    10,    -1,    25,    10,    -1,    68,    10,    -1,    82,
-      10,    -1,    83,    10,    -1,   109,    10,    -1,    54,    10,
-      -1,    64,    10,    -1,    55,    10,    -1,   102,    10,    -1,
-      48,    10,    -1,    49,    10,    -1,    50,    10,    -1,    51,
-      10,    -1,   113,    10,    -1,   117,    10,    -1,   114,    10,
-      -1,    61,    10,    -1,    26,    10,    -1,    27,    10,    -1,
-      28,    10,    -1,    98,    10,    -1,    29,    10,    -1,    30,
-      10,    -1,    32,    10,    -1,    33,    10,    -1,    35,    10,
-      -1,    36,    10,    -1,    34,    10,    -1,    41,    10,    -1,
-      42,    10,    -1,    43,    10,    -1,    52,    10,    -1,    71,
-      10,    -1,   118,    10,    -1,    85,    10,    -1,    78,    10,
-      -1,    86,    10,    -1,    87,    10,    -1,   115,    10,    -1,
-     116,    10,    -1,   100,    10,    -1,    47,    10,    -1,    69,
-      10,    -1,    72,    10,    10,    -1,    53,    10,    -1,    56,
-      10,    -1,   105,    10,    -1,   106,    10,    -1,    70,    10,
-      -1,   107,    10,    -1,    57,    10,    -1,    58,    10,    -1,
-      59,    10,    -1,   119,    10,    -1,   108,    10,    -1,    65,
-      10,    -1,   111,    10,    -1,   112,    10,    -1,   110,    10,
-      -1,    62,    10,    -1,    63,    10,    -1,    84,    10,    -1,
-      73,    10,    10,    -1,    74,    10,    -1,    97,    10,    -1,
+     131,     0,    -1,    -1,   131,   132,    -1,   133,   134,    -1,
+     136,   137,    -1,   139,   140,    -1,   259,   260,    -1,   249,
+     250,    -1,    11,    -1,   134,   135,    -1,    -1,   142,    -1,
+     143,    -1,   147,    -1,   150,    -1,   156,    -1,   157,    -1,
+     158,    -1,   159,    -1,   148,    -1,   169,    -1,   170,    -1,
+     171,    -1,   172,    -1,   173,    -1,   190,    -1,   191,    -1,
+     192,    -1,   194,    -1,   195,    -1,   153,    -1,   196,    -1,
+     197,    -1,   200,    -1,   198,    -1,   199,    -1,   201,    -1,
+     202,    -1,   203,    -1,   214,    -1,   182,    -1,   183,    -1,
+     184,    -1,   185,    -1,   204,    -1,   217,    -1,   178,    -1,
+     180,    -1,   218,    -1,   223,    -1,   224,    -1,   225,    -1,
+     154,    -1,   189,    -1,   232,    -1,   233,    -1,   179,    -1,
+     228,    -1,   166,    -1,   149,    -1,   174,    -1,   215,    -1,
+     221,    -1,   205,    -1,   216,    -1,   235,    -1,   236,    -1,
+     155,    -1,   144,    -1,   165,    -1,   208,    -1,   145,    -1,
+     151,    -1,   152,    -1,   175,    -1,   176,    -1,   234,    -1,
+     207,    -1,   209,    -1,   210,    -1,   146,    -1,   237,    -1,
+     193,    -1,   213,    -1,   167,    -1,   181,    -1,   219,    -1,
+     220,    -1,   222,    -1,   227,    -1,   177,    -1,   229,    -1,
+     230,    -1,   231,    -1,   186,    -1,   188,    -1,   211,    -1,
+     212,    -1,   187,    -1,   206,    -1,   226,    -1,   168,    -1,
+     160,    -1,   161,    -1,   162,    -1,   163,    -1,   164,    -1,
+     238,    -1,   239,    -1,    38,    -1,   137,   138,    -1,    -1,
+     240,    -1,   241,    -1,   242,    -1,   244,    -1,   243,    -1,
+      44,    -1,   140,   141,    -1,    -1,   245,    -1,   246,    -1,
+     247,    -1,   248,    -1,    13,    10,    -1,    12,    10,    -1,
+      76,    10,    -1,    79,    10,    -1,    96,    10,    -1,    14,
+      10,    -1,    16,    10,    -1,    67,    10,    -1,    15,    10,
+      -1,    80,    10,    -1,    81,    10,    -1,    31,    10,    -1,
+      60,    10,    -1,    75,    10,    -1,    17,    10,    -1,    18,
+      10,    -1,    19,    10,    -1,    20,    10,    -1,   121,    10,
+      -1,   122,    10,    -1,   123,    10,    -1,   124,    10,    -1,
+     125,    10,    -1,    77,    10,    -1,    66,    10,    -1,   101,
+      10,    -1,   120,    10,    -1,    21,    10,    -1,    22,    10,
+      -1,    23,    10,    -1,    24,    10,    -1,    25,    10,    -1,
+      68,    10,    -1,    82,    10,    -1,    83,    10,    -1,   109,
+      10,    -1,    54,    10,    -1,    64,    10,    -1,    55,    10,
+      -1,   102,    10,    -1,    48,    10,    -1,    49,    10,    -1,
+      50,    10,    -1,    51,    10,    -1,   113,    10,    -1,   117,
+      10,    -1,   114,    10,    -1,    61,    10,    -1,    26,    10,
+      -1,    27,    10,    -1,    28,    10,    -1,    98,    10,    -1,
+      29,    10,    -1,    30,    10,    -1,    32,    10,    -1,    33,
+      10,    -1,    35,    10,    -1,    36,    10,    -1,    34,    10,
+      -1,    41,    10,    -1,    42,    10,    -1,    43,    10,    -1,
+      52,    10,    -1,    71,    10,    -1,   118,    10,    -1,    85,
+      10,    -1,    78,    10,    -1,    86,    10,    -1,    87,    10,
+      -1,   115,    10,    -1,   116,    10,    -1,   100,    10,    -1,
+      47,    10,    -1,    69,    10,    -1,    72,    10,    10,    -1,
+      53,    10,    -1,    56,    10,    -1,   105,    10,    -1,   106,
+      10,    -1,    70,    10,    -1,   107,    10,    -1,    57,    10,
+      -1,    58,    10,    -1,    59,    10,    -1,   119,    10,    -1,
+     108,    10,    -1,    65,    10,    -1,   111,    10,    -1,   112,
+      10,    -1,   110,    10,    -1,    62,    10,    -1,    63,    10,
+      -1,    84,    10,    -1,    73,    10,    10,    -1,    74,    10,
+      -1,    97,    10,    -1,   128,    10,    -1,   129,    10,    -1,
       37,    10,    -1,    39,    10,    -1,    40,    10,    -1,   127,
       10,    -1,    99,    10,    -1,    37,    10,    -1,    45,    10,
-      -1,    46,    10,    -1,   126,    10,    -1,    88,    -1,   246,
-     247,    -1,    -1,   248,    -1,   250,    -1,   249,    -1,   251,
-      -1,   252,    -1,   253,    -1,   254,    -1,    89,    10,    -1,
+      -1,    46,    10,    -1,   126,    10,    -1,    88,    -1,   250,
+     251,    -1,    -1,   252,    -1,   254,    -1,   253,    -1,   255,
+      -1,   256,    -1,   257,    -1,   258,    -1,    89,    10,    -1,
       91,    10,    -1,    90,    10,    -1,    92,    10,    -1,    93,
       10,    -1,    94,    10,    -1,    95,    10,    -1,   103,    -1,
-     256,   257,    -1,    -1,   258,    -1,   104,    10,    -1
+     260,   261,    -1,    -1,   262,    -1,   104,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -796,21 +802,22 @@ static const yytype_uint16 yyrline[] =
      148,   149,   149,   150,   150,   151,   151,   151,   152,   152,
      153,   153,   154,   154,   155,   155,   156,   156,   157,   157,
      157,   158,   158,   159,   159,   159,   160,   160,   160,   161,
-     161,   161,   162,   162,   162,   163,   163,   163,   165,   177,
-     178,   179,   179,   179,   179,   179,   181,   193,   194,   195,
-     195,   195,   195,   197,   206,   215,   226,   235,   244,   253,
-     266,   281,   290,   299,   308,   317,   326,   335,   344,   353,
-     362,   371,   380,   389,   396,   403,   412,   421,   435,   444,
-     453,   460,   467,   474,   482,   489,   496,   503,   510,   518,
-     526,   534,   541,   548,   557,   566,   573,   580,   588,   596,
-     609,   620,   628,   641,   650,   659,   667,   680,   689,   697,
-     706,   714,   727,   734,   744,   754,   764,   774,   784,   794,
-     804,   811,   818,   827,   836,   845,   852,   862,   876,   883,
-     901,   914,   927,   936,   945,   954,   964,   974,   983,   992,
-     999,  1008,  1017,  1026,  1034,  1047,  1055,  1077,  1084,  1099,
-    1109,  1116,  1123,  1132,  1142,  1152,  1159,  1166,  1175,  1180,
-    1181,  1182,  1182,  1182,  1183,  1183,  1183,  1184,  1186,  1196,
-    1205,  1212,  1219,  1226,  1233,  1240,  1245,  1246,  1247,  1249
+     161,   161,   162,   162,   162,   163,   163,   163,   164,   164,
+     166,   178,   179,   180,   180,   180,   180,   180,   182,   194,
+     195,   196,   196,   196,   196,   198,   207,   216,   227,   236,
+     245,   254,   267,   282,   291,   300,   309,   318,   327,   336,
+     345,   354,   363,   372,   381,   390,   397,   404,   413,   422,
+     436,   445,   454,   461,   468,   475,   483,   490,   497,   504,
+     511,   519,   527,   535,   542,   549,   558,   567,   574,   581,
+     589,   597,   610,   621,   629,   642,   651,   660,   668,   681,
+     690,   698,   707,   715,   728,   735,   745,   755,   765,   775,
+     785,   795,   805,   812,   819,   828,   837,   846,   853,   863,
+     877,   884,   902,   915,   928,   937,   946,   955,   965,   975,
+     984,   993,  1000,  1009,  1018,  1027,  1035,  1048,  1056,  1078,
+    1085,  1100,  1110,  1120,  1130,  1137,  1144,  1153,  1163,  1173,
+    1180,  1187,  1196,  1201,  1202,  1203,  1203,  1203,  1204,  1204,
+    1204,  1205,  1207,  1217,  1226,  1233,  1240,  1247,  1254,  1261,
+    1266,  1267,  1268,  1270
 };
 #endif
 
@@ -859,17 +866,18 @@ static const char *const yytname[] =
   "VAR_SO_SNDBUF", "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG",
   "VAR_LOG_QUERIES", "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM",
   "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT",
-  "VAR_FORWARD_FIRST", "VAR_STUB_FIRST", "$accept", "toplevelvars",
-  "toplevelvar", "serverstart", "contents_server", "content_server",
-  "stubstart", "contents_stub", "content_stub", "forwardstart",
-  "contents_forward", "content_forward", "server_num_threads",
-  "server_verbosity", "server_statistics_interval",
-  "server_statistics_cumulative", "server_extended_statistics",
-  "server_port", "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_tcp_upstream",
+  "VAR_FORWARD_FIRST", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
+  "VAR_RRSET_ROUNDROBIN", "$accept", "toplevelvars", "toplevelvar",
+  "serverstart", "contents_server", "content_server", "stubstart",
+  "contents_stub", "content_stub", "forwardstart", "contents_forward",
+  "content_forward", "server_num_threads", "server_verbosity",
+  "server_statistics_interval", "server_statistics_cumulative",
+  "server_extended_statistics", "server_port", "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_tcp_upstream",
   "server_ssl_upstream", "server_ssl_service_key",
   "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize",
   "server_use_syslog", "server_log_time_ascii", "server_log_queries",
@@ -902,8 +910,9 @@ static const char *const yytname[] =
   "server_val_nsec3_keysize_iterations", "server_add_holddown",
   "server_del_holddown", "server_keep_missing", "server_key_cache_size",
   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
-  "server_local_data", "server_local_data_ptr", "stub_name", "stub_host",
-  "stub_addr", "stub_first", "stub_prime", "forward_name", "forward_host",
+  "server_local_data", "server_local_data_ptr", "server_minimal_responses",
+  "server_rrset_roundrobin", "stub_name", "stub_host", "stub_addr",
+  "stub_first", "stub_prime", "forward_name", "forward_host",
   "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc",
   "rc_control_enable", "rc_control_port", "rc_control_interface",
   "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file",
@@ -929,26 +938,26 @@ static const yytype_uint16 yytoknum[] =
      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
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   128,   129,   129,   130,   130,   130,   130,   130,   131,
-     132,   132,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   134,   135,
-     135,   136,   136,   136,   136,   136,   137,   138,   138,   139,
-     139,   139,   139,   140,   141,   142,   143,   144,   145,   146,
+       0,   130,   131,   131,   132,   132,   132,   132,   132,   133,
+     134,   134,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     136,   137,   137,   138,   138,   138,   138,   138,   139,   140,
+     140,   141,   141,   141,   141,   142,   143,   144,   145,   146,
      147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
      167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
@@ -959,8 +968,9 @@ static const yytype_uint16 yyr1[] =
      217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
      227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
      237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     246,   247,   247,   247,   247,   247,   247,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   256,   257,   258
+     247,   248,   249,   250,   250,   251,   251,   251,   251,   251,
+     251,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   260,   261,   262
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -976,21 +986,22 @@ static const yytype_uint8 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,     1,     1,     1,     1,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     2,     0,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     2,
+       0,     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,     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,
+       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,     3,     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,     3,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     2
+       2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
+       1,     1,     2,     2,     2,     2,     2,     2,     2,     1,
+       2,     0,     1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -998,8 +1009,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     9,   108,   116,   228,   245,     3,    11,
-     110,   118,   230,   247,     4,     5,     6,     8,     7,     0,
+       2,     0,     1,     9,   110,   118,   232,   249,     3,    11,
+     112,   120,   234,   251,     4,     5,     6,     8,     7,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1009,51 +1020,52 @@ static const yytype_uint8 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,    10,    12,    13,    69,    72,
-      81,    14,    20,    60,    15,    73,    74,    31,    53,    68,
-      16,    17,    18,    19,   103,   104,   105,   106,   107,    70,
-      59,    85,   102,    21,    22,    23,    24,    25,    61,    75,
-      76,    91,    47,    57,    48,    86,    41,    42,    43,    44,
-      95,    99,    96,    54,    26,    27,    28,    83,    29,    30,
-      32,    33,    35,    36,    34,    37,    38,    39,    45,    64,
-     100,    78,    71,    79,    80,    97,    98,    84,    40,    62,
-      65,    46,    49,    87,    88,    63,    89,    50,    51,    52,
-     101,    90,    58,    92,    93,    94,    55,    56,    77,    66,
-      67,    82,     0,     0,     0,     0,     0,   109,   111,   112,
-     113,   115,   114,     0,     0,     0,     0,   117,   119,   120,
-     121,   122,     0,     0,     0,     0,     0,     0,     0,   229,
-     231,   233,   232,   234,   235,   236,   237,     0,   246,   248,
-     124,   123,   128,   131,   129,   137,   138,   139,   140,   150,
-     151,   152,   153,   154,   171,   172,   173,   175,   176,   134,
-     177,   178,   181,   179,   180,   182,   183,   184,   195,   163,
-     164,   165,   166,   185,   198,   159,   161,   199,   204,   205,
-     206,   135,   170,   213,   214,   160,   209,   147,   130,   155,
-     196,   202,   186,     0,     0,   217,   136,   125,   146,   189,
-     126,   132,   133,   156,   157,   215,   188,   190,   191,   127,
-     218,   174,   194,   148,   162,   200,   201,   203,   208,   158,
-     212,   210,   211,   167,   169,   192,   193,   168,   187,   207,
-     149,   141,   142,   143,   144,   145,   219,   220,   221,   223,
-     222,   224,   225,   226,   227,   238,   240,   239,   241,   242,
-     243,   244,   249,   197,   216
+       0,     0,     0,     0,     0,     0,     0,    10,    12,    13,
+      69,    72,    81,    14,    20,    60,    15,    73,    74,    31,
+      53,    68,    16,    17,    18,    19,   103,   104,   105,   106,
+     107,    70,    59,    85,   102,    21,    22,    23,    24,    25,
+      61,    75,    76,    91,    47,    57,    48,    86,    41,    42,
+      43,    44,    95,    99,    96,    54,    26,    27,    28,    83,
+      29,    30,    32,    33,    35,    36,    34,    37,    38,    39,
+      45,    64,   100,    78,    71,    79,    80,    97,    98,    84,
+      40,    62,    65,    46,    49,    87,    88,    63,    89,    50,
+      51,    52,   101,    90,    58,    92,    93,    94,    55,    56,
+      77,    66,    67,    82,   108,   109,     0,     0,     0,     0,
+       0,   111,   113,   114,   115,   117,   116,     0,     0,     0,
+       0,   119,   121,   122,   123,   124,     0,     0,     0,     0,
+       0,     0,     0,   233,   235,   237,   236,   238,   239,   240,
+     241,     0,   250,   252,   126,   125,   130,   133,   131,   139,
+     140,   141,   142,   152,   153,   154,   155,   156,   173,   174,
+     175,   177,   178,   136,   179,   180,   183,   181,   182,   184,
+     185,   186,   197,   165,   166,   167,   168,   187,   200,   161,
+     163,   201,   206,   207,   208,   137,   172,   215,   216,   162,
+     211,   149,   132,   157,   198,   204,   188,     0,     0,   219,
+     138,   127,   148,   191,   128,   134,   135,   158,   159,   217,
+     190,   192,   193,   129,   220,   176,   196,   150,   164,   202,
+     203,   205,   210,   160,   214,   212,   213,   169,   171,   194,
+     195,   170,   189,   209,   151,   143,   144,   145,   146,   147,
+     221,   222,   223,   224,   225,   227,   226,   228,   229,   230,
+     231,   242,   244,   243,   245,   246,   247,   248,   253,   199,
+     218
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     8,     9,    14,   115,    10,    15,   217,    11,
-      16,   227,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   218,   219,
-     220,   221,   222,   228,   229,   230,   231,    12,    17,   239,
-     240,   241,   242,   243,   244,   245,   246,    13,    18,   248,
-     249
+      -1,     1,     8,     9,    14,   117,    10,    15,   221,    11,
+      16,   231,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   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,
+     222,   223,   224,   225,   226,   232,   233,   234,   235,    12,
+      17,   243,   244,   245,   246,   247,   248,   249,   250,    13,
+      18,   252,   253
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1063,16 +1075,16 @@ static const yytype_int16 yypact[] =
 {
      -80,    76,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -12,    40,    46,    32,   -79,    16,
-      17,    18,    22,    23,    24,    68,    71,    72,   105,   106,
-     107,   108,   109,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   155,   156,
-     158,   159,   160,   161,   163,   164,   165,   166,   167,   168,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   -80,   -80,   -80,   -80,   -80,
+      17,    18,    22,    23,    24,    68,    71,    72,   105,   108,
+     109,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   155,   156,   158,   159,
+     160,   161,   163,   164,   165,   166,   167,   168,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
@@ -1082,22 +1094,23 @@ static const yytype_int16 yypact[] =
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   205,   206,   207,   208,   209,   -80,   -80,   -80,
-     -80,   -80,   -80,   210,   211,   212,   213,   -80,   -80,   -80,
-     -80,   -80,   214,   215,   216,   217,   218,   219,   220,   -80,
-     -80,   -80,   -80,   -80,   -80,   -80,   -80,   221,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   209,   210,   211,   212,
+     213,   -80,   -80,   -80,   -80,   -80,   -80,   214,   215,   216,
+     217,   -80,   -80,   -80,   -80,   -80,   218,   219,   220,   221,
+     222,   223,   224,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   225,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   226,   227,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   222,   223,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80
+     -80
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1116,7 +1129,7 @@ static const yytype_int8 yypgoto[] =
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80
+     -80,   -80,   -80
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1127,28 +1140,28 @@ static const yytype_uint16 yytable[] =
 {
       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,   247,   250,   251,   252,    44,
-      45,    46,   253,   254,   255,    47,    48,    49,    50,    51,
+      39,    40,    41,    42,    43,   251,   254,   255,   256,    44,
+      45,    46,   257,   258,   259,    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,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,     2,   212,   256,   213,
-     214,   257,   258,   223,    88,    89,    90,     3,    91,    92,
-      93,   224,   225,    94,    95,    96,    97,    98,    99,   100,
+      82,    83,    84,    85,    86,    87,     2,   216,   260,   217,
+     218,   261,   262,   227,    88,    89,    90,     3,    91,    92,
+      93,   228,   229,    94,    95,    96,    97,    98,    99,   100,
      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,     4,   259,   260,   261,   262,   263,
-       5,   232,   233,   234,   235,   236,   237,   238,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   215,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,     6,   299,   300,   216,   301,   302,
-     303,   304,   226,   305,   306,   307,   308,   309,   310,     7,
-     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
+     111,   112,   113,   114,     4,   263,   115,   116,   264,   265,
+       5,   236,   237,   238,   239,   240,   241,   242,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   219,
+     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   300,     6,   301,   302,   220,   303,   304,
+     305,   306,   230,   307,   308,   309,   310,   311,   312,     7,
+     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
 };
 
 #define yypact_value_is_default(yystate) \
@@ -1170,7 +1183,7 @@ static const yytype_uint8 yycheck[] =
       40,    10,    10,    37,    96,    97,    98,    11,   100,   101,
      102,    45,    46,   105,   106,   107,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,    38,    10,    10,    10,    10,    10,
+     122,   123,   124,   125,    38,    10,   128,   129,    10,    10,
       44,    89,    90,    91,    92,    93,    94,    95,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    99,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1182,15 +1195,15 @@ static const yytype_uint8 yycheck[] =
       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,    10,    10,    10
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   129,     0,    11,    38,    44,    88,   103,   130,   131,
-     134,   137,   245,   255,   132,   135,   138,   246,   256,    12,
+       0,   131,     0,    11,    38,    44,    88,   103,   132,   133,
+     136,   139,   249,   259,   134,   137,   140,   250,   260,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    41,    42,    43,    47,    48,    49,
@@ -1200,7 +1213,7 @@ static const yytype_uint16 yystos[] =
       80,    81,    82,    83,    84,    85,    86,    87,    96,    97,
       98,   100,   101,   102,   105,   106,   107,   108,   109,   110,
      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   133,   140,   141,   142,   143,
+     121,   122,   123,   124,   125,   128,   129,   135,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
      164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
@@ -1210,10 +1223,11 @@ static const yytype_uint16 yystos[] =
      204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
      214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
      224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,    37,    39,    40,    99,   127,   136,   236,   237,
-     238,   239,   240,    37,    45,    46,   126,   139,   241,   242,
-     243,   244,    89,    90,    91,    92,    93,    94,    95,   247,
-     248,   249,   250,   251,   252,   253,   254,   104,   257,   258,
+     234,   235,   236,   237,   238,   239,    37,    39,    40,    99,
+     127,   138,   240,   241,   242,   243,   244,    37,    45,    46,
+     126,   141,   245,   246,   247,   248,    89,    90,    91,    92,
+      93,    94,    95,   251,   252,   253,   254,   255,   256,   257,
+     258,   104,   261,   262,    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,
@@ -1225,7 +1239,7 @@ static const yytype_uint16 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
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2068,10 +2082,10 @@ yyreduce:
        }
     break;
 
-  case 108:
+  case 110:
 
 /* Line 1806 of yacc.c  */
-#line 166 "./util/configparser.y"
+#line 167 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2084,10 +2098,10 @@ yyreduce:
        }
     break;
 
-  case 116:
+  case 118:
 
 /* Line 1806 of yacc.c  */
-#line 182 "./util/configparser.y"
+#line 183 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2100,10 +2114,10 @@ yyreduce:
        }
     break;
 
-  case 123:
+  case 125:
 
 /* Line 1806 of yacc.c  */
-#line 198 "./util/configparser.y"
+#line 199 "./util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2113,10 +2127,10 @@ yyreduce:
        }
     break;
 
-  case 124:
+  case 126:
 
 /* Line 1806 of yacc.c  */
-#line 207 "./util/configparser.y"
+#line 208 "./util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2126,10 +2140,10 @@ yyreduce:
        }
     break;
 
-  case 125:
+  case 127:
 
 /* Line 1806 of yacc.c  */
-#line 216 "./util/configparser.y"
+#line 217 "./util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
@@ -2141,10 +2155,10 @@ yyreduce:
        }
     break;
 
-  case 126:
+  case 128:
 
 /* Line 1806 of yacc.c  */
-#line 227 "./util/configparser.y"
+#line 228 "./util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2154,10 +2168,10 @@ yyreduce:
        }
     break;
 
-  case 127:
+  case 129:
 
 /* Line 1806 of yacc.c  */
-#line 236 "./util/configparser.y"
+#line 237 "./util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2167,10 +2181,10 @@ yyreduce:
        }
     break;
 
-  case 128:
+  case 130:
 
 /* Line 1806 of yacc.c  */
-#line 245 "./util/configparser.y"
+#line 246 "./util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2180,10 +2194,10 @@ yyreduce:
        }
     break;
 
-  case 129:
+  case 131:
 
 /* Line 1806 of yacc.c  */
-#line 254 "./util/configparser.y"
+#line 255 "./util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2197,10 +2211,10 @@ yyreduce:
        }
     break;
 
-  case 130:
+  case 132:
 
 /* Line 1806 of yacc.c  */
-#line 267 "./util/configparser.y"
+#line 268 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2216,10 +2230,10 @@ yyreduce:
        }
     break;
 
-  case 131:
+  case 133:
 
 /* Line 1806 of yacc.c  */
-#line 282 "./util/configparser.y"
+#line 283 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2229,10 +2243,10 @@ yyreduce:
        }
     break;
 
-  case 132:
+  case 134:
 
 /* Line 1806 of yacc.c  */
-#line 291 "./util/configparser.y"
+#line 292 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -2242,10 +2256,10 @@ yyreduce:
        }
     break;
 
-  case 133:
+  case 135:
 
 /* Line 1806 of yacc.c  */
-#line 300 "./util/configparser.y"
+#line 301 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -2255,10 +2269,10 @@ yyreduce:
        }
     break;
 
-  case 134:
+  case 136:
 
 /* Line 1806 of yacc.c  */
-#line 309 "./util/configparser.y"
+#line 310 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2268,10 +2282,10 @@ yyreduce:
        }
     break;
 
-  case 135:
+  case 137:
 
 /* Line 1806 of yacc.c  */
-#line 318 "./util/configparser.y"
+#line 319 "./util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2281,10 +2295,10 @@ yyreduce:
        }
     break;
 
-  case 136:
+  case 138:
 
 /* Line 1806 of yacc.c  */
-#line 327 "./util/configparser.y"
+#line 328 "./util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2294,10 +2308,10 @@ yyreduce:
        }
     break;
 
-  case 137:
+  case 139:
 
 /* Line 1806 of yacc.c  */
-#line 336 "./util/configparser.y"
+#line 337 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2307,10 +2321,10 @@ yyreduce:
        }
     break;
 
-  case 138:
+  case 140:
 
 /* Line 1806 of yacc.c  */
-#line 345 "./util/configparser.y"
+#line 346 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2320,10 +2334,10 @@ yyreduce:
        }
     break;
 
-  case 139:
+  case 141:
 
 /* Line 1806 of yacc.c  */
-#line 354 "./util/configparser.y"
+#line 355 "./util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2333,10 +2347,10 @@ yyreduce:
        }
     break;
 
-  case 140:
+  case 142:
 
 /* Line 1806 of yacc.c  */
-#line 363 "./util/configparser.y"
+#line 364 "./util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2346,10 +2360,10 @@ yyreduce:
        }
     break;
 
-  case 141:
+  case 143:
 
 /* Line 1806 of yacc.c  */
-#line 372 "./util/configparser.y"
+#line 373 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2359,10 +2373,10 @@ yyreduce:
        }
     break;
 
-  case 142:
+  case 144:
 
 /* Line 1806 of yacc.c  */
-#line 381 "./util/configparser.y"
+#line 382 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2372,10 +2386,10 @@ yyreduce:
        }
     break;
 
-  case 143:
+  case 145:
 
 /* Line 1806 of yacc.c  */
-#line 390 "./util/configparser.y"
+#line 391 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_key);
@@ -2383,10 +2397,10 @@ yyreduce:
        }
     break;
 
-  case 144:
+  case 146:
 
 /* Line 1806 of yacc.c  */
-#line 397 "./util/configparser.y"
+#line 398 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_pem);
@@ -2394,10 +2408,10 @@ yyreduce:
        }
     break;
 
-  case 145:
+  case 147:
 
 /* Line 1806 of yacc.c  */
-#line 404 "./util/configparser.y"
+#line 405 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2407,10 +2421,10 @@ yyreduce:
        }
     break;
 
-  case 146:
+  case 148:
 
 /* Line 1806 of yacc.c  */
-#line 413 "./util/configparser.y"
+#line 414 "./util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2420,10 +2434,10 @@ yyreduce:
        }
     break;
 
-  case 147:
+  case 149:
 
 /* Line 1806 of yacc.c  */
-#line 422 "./util/configparser.y"
+#line 423 "./util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2438,10 +2452,10 @@ yyreduce:
        }
     break;
 
-  case 148:
+  case 150:
 
 /* Line 1806 of yacc.c  */
-#line 436 "./util/configparser.y"
+#line 437 "./util/configparser.y"
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2451,10 +2465,10 @@ yyreduce:
        }
     break;
 
-  case 149:
+  case 151:
 
 /* Line 1806 of yacc.c  */
-#line 445 "./util/configparser.y"
+#line 446 "./util/configparser.y"
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2464,10 +2478,10 @@ yyreduce:
        }
     break;
 
-  case 150:
+  case 152:
 
 /* Line 1806 of yacc.c  */
-#line 454 "./util/configparser.y"
+#line 455 "./util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2475,10 +2489,10 @@ yyreduce:
        }
     break;
 
-  case 151:
+  case 153:
 
 /* Line 1806 of yacc.c  */
-#line 461 "./util/configparser.y"
+#line 462 "./util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2486,10 +2500,10 @@ yyreduce:
        }
     break;
 
-  case 152:
+  case 154:
 
 /* Line 1806 of yacc.c  */
-#line 468 "./util/configparser.y"
+#line 469 "./util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2497,10 +2511,10 @@ yyreduce:
        }
     break;
 
-  case 153:
+  case 155:
 
 /* Line 1806 of yacc.c  */
-#line 475 "./util/configparser.y"
+#line 476 "./util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2509,10 +2523,10 @@ yyreduce:
        }
     break;
 
-  case 154:
+  case 156:
 
 /* Line 1806 of yacc.c  */
-#line 483 "./util/configparser.y"
+#line 484 "./util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2520,10 +2534,10 @@ yyreduce:
        }
     break;
 
-  case 155:
+  case 157:
 
 /* Line 1806 of yacc.c  */
-#line 490 "./util/configparser.y"
+#line 491 "./util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
@@ -2531,10 +2545,10 @@ yyreduce:
        }
     break;
 
-  case 156:
+  case 158:
 
 /* Line 1806 of yacc.c  */
-#line 497 "./util/configparser.y"
+#line 498 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2542,10 +2556,10 @@ yyreduce:
        }
     break;
 
-  case 157:
+  case 159:
 
 /* Line 1806 of yacc.c  */
-#line 504 "./util/configparser.y"
+#line 505 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2553,10 +2567,10 @@ yyreduce:
        }
     break;
 
-  case 158:
+  case 160:
 
 /* Line 1806 of yacc.c  */
-#line 511 "./util/configparser.y"
+#line 512 "./util/configparser.y"
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2565,10 +2579,10 @@ yyreduce:
        }
     break;
 
-  case 159:
+  case 161:
 
 /* Line 1806 of yacc.c  */
-#line 519 "./util/configparser.y"
+#line 520 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2577,10 +2591,10 @@ yyreduce:
        }
     break;
 
-  case 160:
+  case 162:
 
 /* Line 1806 of yacc.c  */
-#line 527 "./util/configparser.y"
+#line 528 "./util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2589,10 +2603,10 @@ yyreduce:
        }
     break;
 
-  case 161:
+  case 163:
 
 /* Line 1806 of yacc.c  */
-#line 535 "./util/configparser.y"
+#line 536 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2600,10 +2614,10 @@ yyreduce:
        }
     break;
 
-  case 162:
+  case 164:
 
 /* Line 1806 of yacc.c  */
-#line 542 "./util/configparser.y"
+#line 543 "./util/configparser.y"
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
@@ -2611,10 +2625,10 @@ yyreduce:
        }
     break;
 
-  case 163:
+  case 165:
 
 /* Line 1806 of yacc.c  */
-#line 549 "./util/configparser.y"
+#line 550 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2624,10 +2638,10 @@ yyreduce:
        }
     break;
 
-  case 164:
+  case 166:
 
 /* Line 1806 of yacc.c  */
-#line 558 "./util/configparser.y"
+#line 559 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2637,10 +2651,10 @@ yyreduce:
        }
     break;
 
-  case 165:
+  case 167:
 
 /* Line 1806 of yacc.c  */
-#line 567 "./util/configparser.y"
+#line 568 "./util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2648,10 +2662,10 @@ yyreduce:
        }
     break;
 
-  case 166:
+  case 168:
 
 /* Line 1806 of yacc.c  */
-#line 574 "./util/configparser.y"
+#line 575 "./util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2659,10 +2673,10 @@ yyreduce:
        }
     break;
 
-  case 167:
+  case 169:
 
 /* Line 1806 of yacc.c  */
-#line 581 "./util/configparser.y"
+#line 582 "./util/configparser.y"
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf))
@@ -2671,10 +2685,10 @@ yyreduce:
        }
     break;
 
-  case 168:
+  case 170:
 
 /* Line 1806 of yacc.c  */
-#line 589 "./util/configparser.y"
+#line 590 "./util/configparser.y"
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf))
@@ -2683,10 +2697,10 @@ yyreduce:
        }
     break;
 
-  case 169:
+  case 171:
 
 /* Line 1806 of yacc.c  */
-#line 597 "./util/configparser.y"
+#line 598 "./util/configparser.y"
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2700,10 +2714,10 @@ yyreduce:
        }
     break;
 
-  case 170:
+  case 172:
 
 /* Line 1806 of yacc.c  */
-#line 610 "./util/configparser.y"
+#line 611 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2715,10 +2729,10 @@ yyreduce:
        }
     break;
 
-  case 171:
+  case 173:
 
 /* Line 1806 of yacc.c  */
-#line 621 "./util/configparser.y"
+#line 622 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
@@ -2727,10 +2741,10 @@ yyreduce:
        }
     break;
 
-  case 172:
+  case 174:
 
 /* Line 1806 of yacc.c  */
-#line 629 "./util/configparser.y"
+#line 630 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2744,10 +2758,10 @@ yyreduce:
        }
     break;
 
-  case 173:
+  case 175:
 
 /* Line 1806 of yacc.c  */
-#line 642 "./util/configparser.y"
+#line 643 "./util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2757,10 +2771,10 @@ yyreduce:
        }
     break;
 
-  case 174:
+  case 176:
 
 /* Line 1806 of yacc.c  */
-#line 651 "./util/configparser.y"
+#line 652 "./util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2770,10 +2784,10 @@ yyreduce:
        }
     break;
 
-  case 175:
+  case 177:
 
 /* Line 1806 of yacc.c  */
-#line 660 "./util/configparser.y"
+#line 661 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
@@ -2782,10 +2796,10 @@ yyreduce:
        }
     break;
 
-  case 176:
+  case 178:
 
 /* Line 1806 of yacc.c  */
-#line 668 "./util/configparser.y"
+#line 669 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2799,10 +2813,10 @@ yyreduce:
        }
     break;
 
-  case 177:
+  case 179:
 
 /* Line 1806 of yacc.c  */
-#line 681 "./util/configparser.y"
+#line 682 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2812,10 +2826,10 @@ yyreduce:
        }
     break;
 
-  case 178:
+  case 180:
 
 /* Line 1806 of yacc.c  */
-#line 690 "./util/configparser.y"
+#line 691 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
@@ -2824,10 +2838,10 @@ yyreduce:
        }
     break;
 
-  case 179:
+  case 181:
 
 /* Line 1806 of yacc.c  */
-#line 698 "./util/configparser.y"
+#line 699 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2837,10 +2851,10 @@ yyreduce:
        }
     break;
 
-  case 180:
+  case 182:
 
 /* Line 1806 of yacc.c  */
-#line 707 "./util/configparser.y"
+#line 708 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
@@ -2849,10 +2863,10 @@ yyreduce:
        }
     break;
 
-  case 181:
+  case 183:
 
 /* Line 1806 of yacc.c  */
-#line 715 "./util/configparser.y"
+#line 716 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2866,10 +2880,10 @@ yyreduce:
        }
     break;
 
-  case 182:
+  case 184:
 
 /* Line 1806 of yacc.c  */
-#line 728 "./util/configparser.y"
+#line 729 "./util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2877,10 +2891,10 @@ yyreduce:
        }
     break;
 
-  case 183:
+  case 185:
 
 /* Line 1806 of yacc.c  */
-#line 735 "./util/configparser.y"
+#line 736 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2891,10 +2905,10 @@ yyreduce:
        }
     break;
 
-  case 184:
+  case 186:
 
 /* Line 1806 of yacc.c  */
-#line 745 "./util/configparser.y"
+#line 746 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2905,10 +2919,10 @@ yyreduce:
        }
     break;
 
-  case 185:
+  case 187:
 
 /* Line 1806 of yacc.c  */
-#line 755 "./util/configparser.y"
+#line 756 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2919,10 +2933,10 @@ yyreduce:
        }
     break;
 
-  case 186:
+  case 188:
 
 /* Line 1806 of yacc.c  */
-#line 765 "./util/configparser.y"
+#line 766 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2933,10 +2947,10 @@ yyreduce:
        }
     break;
 
-  case 187:
+  case 189:
 
 /* Line 1806 of yacc.c  */
-#line 775 "./util/configparser.y"
+#line 776 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2947,10 +2961,10 @@ yyreduce:
        }
     break;
 
-  case 188:
+  case 190:
 
 /* Line 1806 of yacc.c  */
-#line 785 "./util/configparser.y"
+#line 786 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2961,10 +2975,10 @@ yyreduce:
        }
     break;
 
-  case 189:
+  case 191:
 
 /* Line 1806 of yacc.c  */
-#line 795 "./util/configparser.y"
+#line 796 "./util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2975,10 +2989,10 @@ yyreduce:
        }
     break;
 
-  case 190:
+  case 192:
 
 /* Line 1806 of yacc.c  */
-#line 805 "./util/configparser.y"
+#line 806 "./util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -2986,10 +3000,10 @@ yyreduce:
        }
     break;
 
-  case 191:
+  case 193:
 
 /* Line 1806 of yacc.c  */
-#line 812 "./util/configparser.y"
+#line 813 "./util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -2997,10 +3011,10 @@ yyreduce:
        }
     break;
 
-  case 192:
+  case 194:
 
 /* Line 1806 of yacc.c  */
-#line 819 "./util/configparser.y"
+#line 820 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3010,10 +3024,10 @@ yyreduce:
        }
     break;
 
-  case 193:
+  case 195:
 
 /* Line 1806 of yacc.c  */
-#line 828 "./util/configparser.y"
+#line 829 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3023,10 +3037,10 @@ yyreduce:
        }
     break;
 
-  case 194:
+  case 196:
 
 /* Line 1806 of yacc.c  */
-#line 837 "./util/configparser.y"
+#line 838 "./util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3036,10 +3050,10 @@ yyreduce:
        }
     break;
 
-  case 195:
+  case 197:
 
 /* Line 1806 of yacc.c  */
-#line 846 "./util/configparser.y"
+#line 847 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -3047,10 +3061,10 @@ yyreduce:
        }
     break;
 
-  case 196:
+  case 198:
 
 /* Line 1806 of yacc.c  */
-#line 853 "./util/configparser.y"
+#line 854 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3061,10 +3075,10 @@ yyreduce:
        }
     break;
 
-  case 197:
+  case 199:
 
 /* Line 1806 of yacc.c  */
-#line 863 "./util/configparser.y"
+#line 864 "./util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -3079,10 +3093,10 @@ yyreduce:
        }
     break;
 
-  case 198:
+  case 200:
 
 /* Line 1806 of yacc.c  */
-#line 877 "./util/configparser.y"
+#line 878 "./util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -3090,10 +3104,10 @@ yyreduce:
        }
     break;
 
-  case 199:
+  case 201:
 
 /* Line 1806 of yacc.c  */
-#line 884 "./util/configparser.y"
+#line 885 "./util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3112,10 +3126,10 @@ yyreduce:
        }
     break;
 
-  case 200:
+  case 202:
 
 /* Line 1806 of yacc.c  */
-#line 902 "./util/configparser.y"
+#line 903 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3129,10 +3143,10 @@ yyreduce:
        }
     break;
 
-  case 201:
+  case 203:
 
 /* Line 1806 of yacc.c  */
-#line 915 "./util/configparser.y"
+#line 916 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3146,10 +3160,10 @@ yyreduce:
        }
     break;
 
-  case 202:
+  case 204:
 
 /* Line 1806 of yacc.c  */
-#line 928 "./util/configparser.y"
+#line 929 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3159,10 +3173,10 @@ yyreduce:
        }
     break;
 
-  case 203:
+  case 205:
 
 /* Line 1806 of yacc.c  */
-#line 937 "./util/configparser.y"
+#line 938 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3172,10 +3186,10 @@ yyreduce:
        }
     break;
 
-  case 204:
+  case 206:
 
 /* Line 1806 of yacc.c  */
-#line 946 "./util/configparser.y"
+#line 947 "./util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3185,10 +3199,10 @@ yyreduce:
        }
     break;
 
-  case 205:
+  case 207:
 
 /* Line 1806 of yacc.c  */
-#line 955 "./util/configparser.y"
+#line 956 "./util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3199,10 +3213,10 @@ yyreduce:
        }
     break;
 
-  case 206:
+  case 208:
 
 /* Line 1806 of yacc.c  */
-#line 965 "./util/configparser.y"
+#line 966 "./util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3213,10 +3227,10 @@ yyreduce:
        }
     break;
 
-  case 207:
+  case 209:
 
 /* Line 1806 of yacc.c  */
-#line 975 "./util/configparser.y"
+#line 976 "./util/configparser.y"
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3226,10 +3240,10 @@ yyreduce:
        }
     break;
 
-  case 208:
+  case 210:
 
 /* Line 1806 of yacc.c  */
-#line 984 "./util/configparser.y"
+#line 985 "./util/configparser.y"
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3239,10 +3253,10 @@ yyreduce:
        }
     break;
 
-  case 209:
+  case 211:
 
 /* Line 1806 of yacc.c  */
-#line 993 "./util/configparser.y"
+#line 994 "./util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -3250,10 +3264,10 @@ yyreduce:
        }
     break;
 
-  case 210:
+  case 212:
 
 /* Line 1806 of yacc.c  */
-#line 1000 "./util/configparser.y"
+#line 1001 "./util/configparser.y"
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3263,10 +3277,10 @@ yyreduce:
        }
     break;
 
-  case 211:
+  case 213:
 
 /* Line 1806 of yacc.c  */
-#line 1009 "./util/configparser.y"
+#line 1010 "./util/configparser.y"
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3276,10 +3290,10 @@ yyreduce:
        }
     break;
 
-  case 212:
+  case 214:
 
 /* Line 1806 of yacc.c  */
-#line 1018 "./util/configparser.y"
+#line 1019 "./util/configparser.y"
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3289,10 +3303,10 @@ yyreduce:
        }
     break;
 
-  case 213:
+  case 215:
 
 /* Line 1806 of yacc.c  */
-#line 1027 "./util/configparser.y"
+#line 1028 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -3301,10 +3315,10 @@ yyreduce:
        }
     break;
 
-  case 214:
+  case 216:
 
 /* Line 1806 of yacc.c  */
-#line 1035 "./util/configparser.y"
+#line 1036 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3318,10 +3332,10 @@ yyreduce:
        }
     break;
 
-  case 215:
+  case 217:
 
 /* Line 1806 of yacc.c  */
-#line 1048 "./util/configparser.y"
+#line 1049 "./util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -3330,10 +3344,10 @@ yyreduce:
        }
     break;
 
-  case 216:
+  case 218:
 
 /* Line 1806 of yacc.c  */
-#line 1056 "./util/configparser.y"
+#line 1057 "./util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -3356,10 +3370,10 @@ yyreduce:
        }
     break;
 
-  case 217:
+  case 219:
 
 /* Line 1806 of yacc.c  */
-#line 1078 "./util/configparser.y"
+#line 1079 "./util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -3367,10 +3381,10 @@ yyreduce:
        }
     break;
 
-  case 218:
+  case 220:
 
 /* Line 1806 of yacc.c  */
-#line 1085 "./util/configparser.y"
+#line 1086 "./util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -3386,10 +3400,38 @@ yyreduce:
        }
     break;
 
-  case 219:
+  case 221:
 
 /* Line 1806 of yacc.c  */
-#line 1100 "./util/configparser.y"
+#line 1101 "./util/configparser.y"
+    {
+               OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->minimal_responses =
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 222:
+
+/* Line 1806 of yacc.c  */
+#line 1111 "./util/configparser.y"
+    {
+               OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->rrset_roundrobin =
+                       (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 223:
+
+/* Line 1806 of yacc.c  */
+#line 1121 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3400,10 +3442,10 @@ yyreduce:
        }
     break;
 
-  case 220:
+  case 224:
 
 /* Line 1806 of yacc.c  */
-#line 1110 "./util/configparser.y"
+#line 1131 "./util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -3411,10 +3453,10 @@ yyreduce:
        }
     break;
 
-  case 221:
+  case 225:
 
 /* Line 1806 of yacc.c  */
-#line 1117 "./util/configparser.y"
+#line 1138 "./util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -3422,10 +3464,10 @@ yyreduce:
        }
     break;
 
-  case 222:
+  case 226:
 
 /* Line 1806 of yacc.c  */
-#line 1124 "./util/configparser.y"
+#line 1145 "./util/configparser.y"
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3435,10 +3477,10 @@ yyreduce:
        }
     break;
 
-  case 223:
+  case 227:
 
 /* Line 1806 of yacc.c  */
-#line 1133 "./util/configparser.y"
+#line 1154 "./util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3449,10 +3491,10 @@ yyreduce:
        }
     break;
 
-  case 224:
+  case 228:
 
 /* Line 1806 of yacc.c  */
-#line 1143 "./util/configparser.y"
+#line 1164 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3463,10 +3505,10 @@ yyreduce:
        }
     break;
 
-  case 225:
+  case 229:
 
 /* Line 1806 of yacc.c  */
-#line 1153 "./util/configparser.y"
+#line 1174 "./util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -3474,10 +3516,10 @@ yyreduce:
        }
     break;
 
-  case 226:
+  case 230:
 
 /* Line 1806 of yacc.c  */
-#line 1160 "./util/configparser.y"
+#line 1181 "./util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -3485,10 +3527,10 @@ yyreduce:
        }
     break;
 
-  case 227:
+  case 231:
 
 /* Line 1806 of yacc.c  */
-#line 1167 "./util/configparser.y"
+#line 1188 "./util/configparser.y"
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3498,19 +3540,19 @@ yyreduce:
        }
     break;
 
-  case 228:
+  case 232:
 
 /* Line 1806 of yacc.c  */
-#line 1176 "./util/configparser.y"
+#line 1197 "./util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 238:
+  case 242:
 
 /* Line 1806 of yacc.c  */
-#line 1187 "./util/configparser.y"
+#line 1208 "./util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3521,10 +3563,10 @@ yyreduce:
        }
     break;
 
-  case 239:
+  case 243:
 
 /* Line 1806 of yacc.c  */
-#line 1197 "./util/configparser.y"
+#line 1218 "./util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3534,10 +3576,10 @@ yyreduce:
        }
     break;
 
-  case 240:
+  case 244:
 
 /* Line 1806 of yacc.c  */
-#line 1206 "./util/configparser.y"
+#line 1227 "./util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -3545,10 +3587,10 @@ yyreduce:
        }
     break;
 
-  case 241:
+  case 245:
 
 /* Line 1806 of yacc.c  */
-#line 1213 "./util/configparser.y"
+#line 1234 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -3556,10 +3598,10 @@ yyreduce:
        }
     break;
 
-  case 242:
+  case 246:
 
 /* Line 1806 of yacc.c  */
-#line 1220 "./util/configparser.y"
+#line 1241 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -3567,10 +3609,10 @@ yyreduce:
        }
     break;
 
-  case 243:
+  case 247:
 
 /* Line 1806 of yacc.c  */
-#line 1227 "./util/configparser.y"
+#line 1248 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -3578,10 +3620,10 @@ yyreduce:
        }
     break;
 
-  case 244:
+  case 248:
 
 /* Line 1806 of yacc.c  */
-#line 1234 "./util/configparser.y"
+#line 1255 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -3589,19 +3631,19 @@ yyreduce:
        }
     break;
 
-  case 245:
+  case 249:
 
 /* Line 1806 of yacc.c  */
-#line 1241 "./util/configparser.y"
+#line 1262 "./util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
     break;
 
-  case 249:
+  case 253:
 
 /* Line 1806 of yacc.c  */
-#line 1250 "./util/configparser.y"
+#line 1271 "./util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->python_script);
@@ -3612,7 +3654,7 @@ yyreduce:
 
 
 /* Line 1806 of yacc.c  */
-#line 3616 "util/configparser.c"
+#line 3658 "util/configparser.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -3843,7 +3885,7 @@ yyreturn:
 
 
 /* Line 2067 of yacc.c  */
-#line 1255 "./util/configparser.y"
+#line 1276 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index e7b088e570aab7102fe13b955f97b5c276fa122d..58309c4d467728f797fbe84cd02ea5922beeed88 100644 (file)
      VAR_SSL_SERVICE_PEM = 379,
      VAR_SSL_PORT = 380,
      VAR_FORWARD_FIRST = 381,
-     VAR_STUB_FIRST = 382
+     VAR_STUB_FIRST = 382,
+     VAR_MINIMAL_RESPONSES = 383,
+     VAR_RRSET_ROUNDROBIN = 384
    };
 #endif
 /* Tokens.  */
 #define VAR_SSL_PORT 380
 #define VAR_FORWARD_FIRST 381
 #define VAR_STUB_FIRST 382
+#define VAR_MINIMAL_RESPONSES 383
+#define VAR_RRSET_ROUNDROBIN 384
 
 
 
@@ -306,7 +310,7 @@ typedef union YYSTYPE
 
 
 /* Line 2068 of yacc.c  */
-#line 310 "util/configparser.h"
+#line 314 "util/configparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index c11d12f665f9e5f93fbab9457d2ee69d399a2173..0dbee2b498c5547f800069719c17bf8efd5f4ffb 100644 (file)
@@ -104,7 +104,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_HARDEN_BELOW_NXDOMAIN
 %token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM
 %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST
-%token VAR_STUB_FIRST
+%token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -160,7 +160,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_edns_buffer_size | server_prefetch | server_prefetch_key |
        server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag |
        server_log_queries | server_tcp_upstream | server_ssl_upstream |
-       server_ssl_service_key | server_ssl_service_pem | server_ssl_port
+       server_ssl_service_key | server_ssl_service_pem | server_ssl_port |
+       server_minimal_responses | server_rrset_roundrobin
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -1096,6 +1097,26 @@ server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG
                }
        }
        ;
+server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG
+       {
+               OUTYY(("P(server_minimal_responses:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->minimal_responses =
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
+server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG
+       {
+               OUTYY(("P(server_rrset_roundrobin:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->rrset_roundrobin =
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
 stub_name: VAR_NAME STRING_ARG
        {
                OUTYY(("P(name:%s)\n", $2));
index a48a0a910b300acd17c6b4bbcea7c7f94de297f7..157796deb95b1160d087f6e4d094654a63f5484d 100644 (file)
@@ -443,9 +443,9 @@ static int
 packed_rrset_encode(struct ub_packed_rrset_key* key, ldns_buffer* pkt, 
        uint16_t* num_rrs, uint32_t timenow, struct regional* region,
        int do_data, int do_sig, struct compress_tree_node** tree,
-       ldns_pkt_section s, uint16_t qtype, int dnssec)
+       ldns_pkt_section s, uint16_t qtype, int dnssec, size_t rr_offset)
 {
-       size_t i, owner_pos;
+       size_t i, j, owner_pos;
        int r, owner_labs;
        uint16_t owner_ptr = 0;
        struct packed_rrset_data* data = (struct packed_rrset_data*)
@@ -461,26 +461,28 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, ldns_buffer* pkt,
        if(do_data) {
                const ldns_rr_descriptor* c = type_rdata_compressable(key);
                for(i=0; i<data->count; i++) {
+                       /* rrset roundrobin */
+                       j = (i + rr_offset) % data->count;
                        if((r=compress_owner(key, pkt, region, tree, 
                                owner_pos, &owner_ptr, owner_labs))
                                != RETVAL_OK)
                                return r;
                        ldns_buffer_write(pkt, &key->rk.type, 2);
                        ldns_buffer_write(pkt, &key->rk.rrset_class, 2);
-                       if(data->rr_ttl[i] < timenow)
+                       if(data->rr_ttl[j] < timenow)
                                ldns_buffer_write_u32(pkt, 0);
                        else    ldns_buffer_write_u32(pkt, 
-                                       data->rr_ttl[i]-timenow);
+                                       data->rr_ttl[j]-timenow);
                        if(c) {
-                               if((r=compress_rdata(pkt, data->rr_data[i],
-                                       data->rr_len[i], region, tree, c))
+                               if((r=compress_rdata(pkt, data->rr_data[j],
+                                       data->rr_len[j], region, tree, c))
                                        != RETVAL_OK)
                                        return r;
                        } else {
-                               if(ldns_buffer_remaining(pkt) < data->rr_len[i])
+                               if(ldns_buffer_remaining(pkt) < data->rr_len[j])
                                        return RETVAL_TRUNC;
-                               ldns_buffer_write(pkt, data->rr_data[i], 
-                                       data->rr_len[i]);
+                               ldns_buffer_write(pkt, data->rr_data[j],
+                                       data->rr_len[j]);
                        }
                }
        }
@@ -528,7 +530,7 @@ static int
 insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
        ldns_buffer* pkt, size_t rrsets_before, uint32_t timenow, 
        struct regional* region, struct compress_tree_node** tree,
-       ldns_pkt_section s, uint16_t qtype, int dnssec)
+       ldns_pkt_section s, uint16_t qtype, int dnssec, size_t rr_offset)
 {
        int r;
        size_t i, setstart;
@@ -540,7 +542,7 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
                        setstart = ldns_buffer_position(pkt);
                        if((r=packed_rrset_encode(rep->rrsets[rrsets_before+i], 
                                pkt, num_rrs, timenow, region, 1, 1, tree,
-                               s, qtype, dnssec))
+                               s, qtype, dnssec, rr_offset))
                                != RETVAL_OK) {
                                /* Bad, but if due to size must set TC bit */
                                /* trim off the rrset neatly. */
@@ -553,7 +555,7 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
                        setstart = ldns_buffer_position(pkt);
                        if((r=packed_rrset_encode(rep->rrsets[rrsets_before+i], 
                                pkt, num_rrs, timenow, region, 1, 0, tree,
-                               s, qtype, dnssec))
+                               s, qtype, dnssec, rr_offset))
                                != RETVAL_OK) {
                                ldns_buffer_set_position(pkt, setstart);
                                return r;
@@ -564,7 +566,7 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs,
                        setstart = ldns_buffer_position(pkt);
                        if((r=packed_rrset_encode(rep->rrsets[rrsets_before+i], 
                                pkt, num_rrs, timenow, region, 0, 1, tree,
-                               s, qtype, dnssec))
+                               s, qtype, dnssec, rr_offset))
                                != RETVAL_OK) {
                                ldns_buffer_set_position(pkt, setstart);
                                return r;
@@ -595,6 +597,31 @@ insert_query(struct query_info* qinfo, struct compress_tree_node** tree,
        return RETVAL_OK;
 }
 
+static int
+positive_answer(struct reply_info* rep, uint16_t qtype) {
+       size_t i;
+       if (FLAGS_GET_RCODE(rep->flags) != LDNS_RCODE_NOERROR)
+               return 0;
+
+       for(i=0;i<rep->an_numrrsets; i++) {
+               if(ntohs(rep->rrsets[i]->rk.type) == qtype) {
+                       /* in case it is a wildcard with DNSSEC, there will
+                        * be NSEC/NSEC3 records in the authority section
+                        * that we cannot remove */
+                       for(i=rep->an_numrrsets; i<rep->an_numrrsets+
+                               rep->ns_numrrsets; i++) {
+                               if(ntohs(rep->rrsets[i]->rk.type) ==
+                                       LDNS_RR_TYPE_NSEC ||
+                                  ntohs(rep->rrsets[i]->rk.type) ==
+                                       LDNS_RR_TYPE_NSEC3)
+                                       return 0;
+                       }
+                       return 1;
+               }
+       }
+       return 0;
+}
+
 int 
 reply_info_encode(struct query_info* qinfo, struct reply_info* rep, 
        uint16_t id, uint16_t flags, ldns_buffer* buffer, uint32_t timenow, 
@@ -603,6 +630,7 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
        uint16_t ancount=0, nscount=0, arcount=0;
        struct compress_tree_node* tree = 0;
        int r;
+       size_t rr_offset; 
 
        ldns_buffer_clear(buffer);
        if(udpsize < ldns_buffer_limit(buffer))
@@ -630,11 +658,13 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
                        return 0;
                }
        }
+       /* roundrobin offset. using query id for random number */
+       rr_offset = RRSET_ROUNDROBIN?id:0;
 
        /* insert answer section */
        if((r=insert_section(rep, rep->an_numrrsets, &ancount, buffer, 
                0, timenow, region, &tree, LDNS_SECTION_ANSWER, qinfo->qtype, 
-               dnssec)) != RETVAL_OK) {
+               dnssec, rr_offset)) != RETVAL_OK) {
                if(r == RETVAL_TRUNC) {
                        /* create truncated message */
                        ldns_buffer_write_u16_at(buffer, 6, ancount);
@@ -646,35 +676,42 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep,
        }
        ldns_buffer_write_u16_at(buffer, 6, ancount);
 
-       /* insert auth section */
-       if((r=insert_section(rep, rep->ns_numrrsets, &nscount, buffer, 
-               rep->an_numrrsets, timenow, region, &tree,
-               LDNS_SECTION_AUTHORITY, qinfo->qtype, dnssec)) != RETVAL_OK) {
-               if(r == RETVAL_TRUNC) {
-                       /* create truncated message */
-                       ldns_buffer_write_u16_at(buffer, 8, nscount);
-                       LDNS_TC_SET(ldns_buffer_begin(buffer));
-                       ldns_buffer_flip(buffer);
-                       return 1;
+       /* if response is positive answer, auth/add sections are not required */
+       if( ! (MINIMAL_RESPONSES && positive_answer(rep, qinfo->qtype)) ) {
+               /* insert auth section */
+               if((r=insert_section(rep, rep->ns_numrrsets, &nscount, buffer, 
+                       rep->an_numrrsets, timenow, region, &tree,
+                       LDNS_SECTION_AUTHORITY, qinfo->qtype,
+                       dnssec, rr_offset)) != RETVAL_OK) {
+                       if(r == RETVAL_TRUNC) {
+                               /* create truncated message */
+                               ldns_buffer_write_u16_at(buffer, 8, nscount);
+                               LDNS_TC_SET(ldns_buffer_begin(buffer));
+                               ldns_buffer_flip(buffer);
+                               return 1;
+                       }
+                       return 0;
                }
-               return 0;
-       }
-       ldns_buffer_write_u16_at(buffer, 8, nscount);
+               ldns_buffer_write_u16_at(buffer, 8, nscount);
 
-       /* insert add section */
-       if((r=insert_section(rep, rep->ar_numrrsets, &arcount, buffer, 
-               rep->an_numrrsets + rep->ns_numrrsets, timenow, region, 
-               &tree, LDNS_SECTION_ADDITIONAL, qinfo->qtype, 
-               dnssec)) != RETVAL_OK) {
-               if(r == RETVAL_TRUNC) {
-                       /* no need to set TC bit, this is the additional */
-                       ldns_buffer_write_u16_at(buffer, 10, arcount);
-                       ldns_buffer_flip(buffer);
-                       return 1;
+               /* insert add section */
+               if((r=insert_section(rep, rep->ar_numrrsets, &arcount, buffer, 
+                       rep->an_numrrsets + rep->ns_numrrsets, timenow, region, 
+                       &tree, LDNS_SECTION_ADDITIONAL, qinfo->qtype, 
+                       dnssec, rr_offset)) != RETVAL_OK) {
+                       if(r == RETVAL_TRUNC) {
+                               /* no need to set TC bit, this is the additional */
+                               ldns_buffer_write_u16_at(buffer, 10, arcount);
+                               ldns_buffer_flip(buffer);
+                               return 1;
+                       }
+                       return 0;
                }
-               return 0;
+               ldns_buffer_write_u16_at(buffer, 10, arcount);
+       } else {
+               ldns_buffer_write_u16_at(buffer, 8, nscount);
+               ldns_buffer_write_u16_at(buffer, 10, arcount);
        }
-       ldns_buffer_write_u16_at(buffer, 10, arcount);
        ldns_buffer_flip(buffer);
        return 1;
 }
index b3136a352e70d21a0dda85f6e0e2feac4662208e..6be5fcc3132ad7f27b2b6639fa808b616258d654 100644 (file)
 /** default value for EDNS ADVERTISED size */
 uint16_t EDNS_ADVERTISED_SIZE = 4096;
 
+/** minimal responses when positive answer: default is no */
+int MINIMAL_RESPONSES = 0;
+
+/** rrset order roundrobin: default is no */
+int RRSET_ROUNDROBIN = 0;
+
 /* returns true is string addr is an ip6 specced address */
 int
 str_is_ip6(const char* str)
index a45270cd47d23a0cf25a96b2808d897ca868c2b7..e0c0ebea17572e081ec17c4fe3ee05e782250b1e 100644 (file)
@@ -93,6 +93,12 @@ extern uint16_t EDNS_ADVERTISED_SIZE;
 /** DNSKEY secure entry point, KSK flag */
 #define DNSKEY_BIT_SEP 0x0001
 
+/** minimal responses when positive answer */
+extern int MINIMAL_RESPONSES;
+
+/** rrset order roundrobin */
+extern int RRSET_ROUNDROBIN;
+
 /**
  * See if string is ip4 or ip6.
  * @param str: IP specification.