From 4f78b37c61b1d94ea43ae76d5589ab39b4c71f9b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 2 Apr 2020 18:34:03 +0200 Subject: [PATCH 01/45] Down- and upstream padding a la RFC7830 & RFC8467 --- daemon/worker.c | 1 + doc/example.conf.in | 12 + doc/unbound.conf.5.in | 20 + libunbound/libworker.c | 1 + services/authzone.c | 2 + services/outside_network.c | 17 +- services/outside_network.h | 2 + testcode/fake_event.c | 1 + util/config_file.c | 12 + util/config_file.h | 11 + util/configlexer.c | 4408 ++++++------- util/configlexer.lex | 4 + util/configparser.c | 11727 +++++++++++++++-------------------- util/configparser.h | 935 +-- util/configparser.y | 40 + util/data/msgencode.c | 46 +- util/data/msgparse.c | 2 + util/data/msgparse.h | 2 + util/edns.c | 10 + validator/autotrust.c | 1 + 20 files changed, 7866 insertions(+), 9388 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 201e77336..9f8db159f 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1286,6 +1286,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits &= EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; verbose(VERB_ALGO, "query with bad edns version."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); error_encode(c->buffer, EDNS_RCODE_BADVERS&0xf, &qinfo, diff --git a/doc/example.conf.in b/doc/example.conf.in index 091948e2d..7374a564a 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -746,6 +746,12 @@ server: # cipher setting for TLSv1.3 # tls-ciphersuites: "TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256" + # Pad responses to padded queries received over TLS + # pad-responses: yes + + # Padded responses will be padded to the closest multiple of this size. + # pad-responses-block-size: 468 + # Add the secret file for TLS Session Ticket. # Secret file must be 80 bytes of random data. # First key use to encrypt and decrypt TLS session tickets. @@ -764,6 +770,12 @@ server: # Add system certs to the cert bundle, from the Windows Cert Store # tls-win-cert: no + # Pad queries over TLS upstreams + # pad-queries: no + + # Padded queries will be padded to the closest multiple of this size. + # pad-queries-block-size: 128 + # Also serve tls on these port numbers (eg. 443, ...), by listing # tls-additional-port: portno for each of the port numbers. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index cd219c79a..01fd0bd7f 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -546,6 +546,26 @@ and that is the default. Set the list of ciphersuites to allow when serving TLS. This is for newer TLS 1.3 connections. Use "" for defaults, and that is the default. .TP +.B pad\-responses: \fI +If enabled, TLS serviced queries that contained an EDNS Padding option will +cause responses padded to the closest multiple of the size specified in +\fBpad\-responses\-block\-size\fR. +Default is yes. +.TP +.B pad\-responses\-block\-size: \fI +The block size with which to pad responses serviced over TLS. Only responses +to padded queries will be padded. +Default is 468. +.TP +.B pad\-queries: \fI +If enabled, all queries sent over TLS upstreams will be padded to the closest +multiple of the size specified in \fBpad\-queries\-block\-size\fR. +Default is no. +.TP +.B pad\-queries\-block\-size: \fI +The block size with which to pad queries sent over TLS upstreams. +Default is 128. +.TP .B use\-systemd: \fI Enable or disable systemd socket activation. Default is no. diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 24233f1d0..be32c3ae8 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -574,6 +574,7 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q, edns->edns_version = 0; edns->bits = EDNS_DO; edns->opt_list = NULL; + edns->padding_block_size = 0; if(sldns_buffer_capacity(w->back->udp_buff) < 65535) edns->udp_size = (uint16_t)sldns_buffer_capacity( w->back->udp_buff); diff --git a/services/authzone.c b/services/authzone.c index 70fe27a5e..be02610e8 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5091,6 +5091,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; @@ -6278,6 +6279,7 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; diff --git a/services/outside_network.c b/services/outside_network.c index 978e98b0e..ec380c86d 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1415,7 +1415,8 @@ static struct serviced_query* serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, int want_dnssec, int nocaps, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list) + uint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list, + size_t pad_queries_block_size) { struct serviced_query* sq = (struct serviced_query*)malloc(sizeof(*sq)); #ifdef UNBOUND_DEBUG @@ -1473,6 +1474,7 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, sq->status = serviced_initial; sq->retry = 0; sq->to_be_deleted = 0; + sq->padding_block_size = pad_queries_block_size; #ifdef UNBOUND_DEBUG ins = #else @@ -1591,6 +1593,7 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) if(with_edns) { /* add edns section */ struct edns_data edns; + struct edns_option padding_option; edns.edns_present = 1; edns.ext_rcode = 0; edns.edns_version = EDNS_ADVERTISED_VERSION; @@ -1613,6 +1616,14 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) edns.bits = EDNS_DO; if(sq->dnssec & BIT_CD) LDNS_CD_SET(sldns_buffer_begin(buff)); + if (sq->ssl_upstream && sq->padding_block_size) { + padding_option.opt_code = LDNS_EDNS_PADDING; + padding_option.opt_len = 0; + padding_option.opt_data = NULL; + padding_option.next = edns.opt_list; + edns.opt_list = &padding_option; + edns.padding_block_size = sq->padding_block_size; + } attach_edns_record(buff, &edns); } } @@ -2125,7 +2136,9 @@ outnet_serviced_query(struct outside_network* outnet, sq = serviced_create(outnet, buff, dnssec, want_dnssec, nocaps, tcp_upstream, ssl_upstream, tls_auth_name, addr, addrlen, zone, zonelen, (int)qinfo->qtype, - qstate->edns_opts_back_out); + qstate->edns_opts_back_out, + ( ssl_upstream && env->cfg->pad_queries + ? env->cfg->pad_queries_block_size : 0)); if(!sq) { free(cb); return NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 3fc5dde45..eeb77bb92 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -390,6 +390,8 @@ struct serviced_query { struct service_callback* cblist; /** the UDP or TCP query that is pending, see status which */ void* pending; + /** block size with which to pad encrypted queries (default: 128) */ + size_t padding_block_size; }; /** diff --git a/testcode/fake_event.c b/testcode/fake_event.c index c69fb9bfd..209257921 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1222,6 +1222,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, edns.opt_list = qstate->edns_opts_back_out; if(dnssec) edns.bits = EDNS_DO; + edns.padding_block_size = 0; attach_edns_record(pend->buffer, &edns); } memcpy(&pend->addr, addr, addrlen); diff --git a/util/config_file.c b/util/config_file.c index 767d76b29..bd9fd278d 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -322,6 +322,10 @@ config_create(void) cfg->dnscrypt_shared_secret_cache_slabs = 4; cfg->dnscrypt_nonce_cache_size = 4*1024*1024; cfg->dnscrypt_nonce_cache_slabs = 4; + cfg->pad_responses = 1; + cfg->pad_responses_block_size = 468; /* from RFC8467 */ + cfg->pad_queries = 0; + cfg->pad_queries_block_size = 128; /* from RFC8467 */ #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; cfg->ipsecmod_ignore_bogus = 0; @@ -693,6 +697,10 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) else S_YNO("qname-minimisation-strict:", qname_minimisation_strict) + else S_YNO("pad-responses:", pad_responses) + else S_SIZET_NONZERO("pad-responses-block-size:", pad_responses_block_size) + else S_YNO("pad-queries:", pad_queries) + else S_SIZET_NONZERO("pad-queries-block-size:", pad_queries_block_size) #ifdef USE_IPSECMOD else S_YNO("ipsecmod-enabled:", ipsecmod_enabled) else S_YNO("ipsecmod-ignore-bogus:", ipsecmod_ignore_bogus) @@ -1120,6 +1128,10 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) + else O_YNO(opt, "pad-responses", pad_responses) + else O_DEC(opt, "pad-responses-block-size", pad_responses_block_size) + else O_YNO(opt, "pad-queries", pad_queries) + else O_DEC(opt, "pad-queries-block-size", pad_queries_block_size) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) diff --git a/util/config_file.h b/util/config_file.h index 49c9610ce..454b88734 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -569,6 +569,17 @@ struct config_file { size_t dnscrypt_nonce_cache_size; /** number of slabs for dnscrypt nonces cache */ size_t dnscrypt_nonce_cache_slabs; + + /** EDNS padding according to FC7830 and RFC8467 */ + /** true to enable padding of responses (default: on) */ + int pad_responses; + /** block size with which to pad encrypted responses (default: 468) */ + size_t pad_responses_block_size; + /** true to enable padding of queries (default: off) */ + int pad_queries; + /** block size with which to pad encrypted queries (default: 128) */ + size_t pad_queries_block_size; + /** IPsec module */ #ifdef USE_IPSECMOD /** false to bypass the IPsec module */ diff --git a/util/configlexer.c b/util/configlexer.c index 194569a64..6e185a1ad 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 310 -#define YY_END_OF_BUFFER 311 +#define YY_NUM_RULES 314 +#define YY_END_OF_BUFFER 315 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,343 +363,349 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3049] = +static const flex_int16_t yy_accept[3094] = { 0, - 1, 1, 292, 292, 296, 296, 300, 300, 304, 304, - 1, 1, 311, 308, 1, 290, 290, 309, 2, 309, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 292, 293, 293, 294, 309, 296, 297, 297, - 298, 309, 303, 300, 301, 301, 302, 309, 304, 305, - 305, 306, 309, 307, 291, 2, 295, 309, 307, 308, - 0, 1, 2, 2, 2, 2, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, + 1, 1, 315, 312, 1, 294, 294, 313, 2, 313, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 296, 297, 297, 298, 313, 300, 301, 301, + 302, 313, 307, 304, 305, 305, 306, 313, 308, 309, + 309, 310, 313, 311, 295, 2, 299, 313, 311, 312, + 0, 1, 2, 2, 2, 2, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 292, 0, 296, 0, 303, 0, 300, 304, 0, 307, - 0, 2, 2, 307, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 296, 0, 300, 0, 307, 0, 304, 308, 0, + 311, 0, 2, 2, 311, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 307, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 311, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 114, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 122, 308, 308, 308, - 308, 308, 308, 308, 307, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 114, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 122, + 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 98, 308, 308, 308, 308, 308, 308, 8, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 115, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 127, 308, 307, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 98, 312, 312, 312, 312, 312, 312, + 312, 312, 8, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 115, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 285, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 127, 312, 311, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 289, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 307, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 56, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 224, 308, 14, 15, 308, 19, - 18, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 311, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 56, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 224, 312, 14, 15, 312, 19, 18, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 121, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 208, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 3, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 121, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 208, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 3, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 307, 308, 308, - 308, 308, 308, 308, 308, 280, 308, 308, 279, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 299, 308, 308, 308, 308, 308, - 308, 308, 55, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 311, 312, 312, 312, + 312, 312, 312, 312, 284, 312, 312, 283, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 303, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 59, - 308, 254, 308, 308, 308, 308, 308, 308, 308, 308, - 286, 287, 308, 308, 308, 308, 308, 60, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 118, 308, 308, 308, 308, 308, 308, - 308, 308, 197, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 21, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 55, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 59, 312, + 254, 312, 312, 312, 312, 312, 312, 312, 312, 290, + 291, 312, 312, 312, 312, 312, 312, 312, 60, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 118, 312, 312, 312, 312, 312, + 312, 312, 312, 197, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 21, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 146, 308, 308, 299, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 96, 308, 308, 308, 308, - 308, 308, 308, 262, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 169, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 145, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 146, 312, 312, 303, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 96, 312, 312, 312, + 312, 312, 312, 312, 262, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 169, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 145, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 95, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 32, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 33, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 57, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 120, 308, 308, 308, 308, 308, 113, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 95, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 32, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 33, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 57, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 120, 312, 312, 312, - 308, 308, 308, 308, 58, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 227, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 170, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 46, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 113, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 58, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 227, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 170, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 46, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 245, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 50, 308, 51, 308, 308, - 308, 308, 308, 99, 308, 100, 308, 308, 308, 308, - 97, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 7, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 217, 308, 308, - 308, 308, 148, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 245, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 50, 312, 51, 312, 312, 312, 312, 312, 99, 312, + 100, 312, 312, 312, 312, 97, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 7, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 228, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 47, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 189, 308, - 188, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 16, 17, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 217, 312, 312, 312, 312, 148, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 228, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 47, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 189, 312, 188, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 61, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 196, 308, 308, 308, 308, 308, 308, - 102, 308, 101, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 180, 308, 308, 308, 308, 308, 308, - 308, 308, 128, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 80, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 16, 17, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 61, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 196, 312, 312, 312, 312, 312, 312, 102, 312, 101, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 180, 312, 312, 312, 312, 312, 312, 312, 312, 128, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 80, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 84, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 54, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 183, 184, 308, 308, - 308, 256, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 6, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 260, 308, 308, 308, 308, - 308, 308, 281, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 84, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 54, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 183, 184, 312, 312, 312, 256, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 6, 312, 312, 312, 312, 312, 312, 275, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 42, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 44, 308, 308, 308, - 308, 308, 308, 308, 308, 176, 308, 308, 308, 123, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 201, 308, 177, 308, 308, 308, 214, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 45, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 125, 107, 308, 108, - 308, 308, 308, 106, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 260, 312, 312, 312, 312, + 312, 312, 285, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 42, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 44, 312, 312, 312, + 312, 312, 312, 312, 312, 176, 312, 312, 312, 123, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 201, 312, 177, 312, 312, 312, 214, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 45, 312, 312, 312, - 308, 308, 143, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 244, 308, 308, 308, 308, 308, - 308, 308, 308, 178, 308, 308, 308, 308, 308, 181, - 308, 187, 308, 308, 308, 308, 308, 213, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 94, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 119, 308, 308, 308, 308, 308, 308, 52, 308, 308, - 308, 26, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 20, 308, 308, 308, 308, 308, 308, 27, 36, + 312, 312, 312, 312, 312, 312, 125, 107, 312, 108, + 312, 312, 312, 106, 312, 312, 312, 312, 312, 312, + 312, 312, 143, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 244, 312, 312, 312, 312, 312, + 312, 312, 312, 178, 312, 312, 312, 312, 312, 181, + 312, 187, 312, 312, 312, 312, 312, 213, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 94, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 119, 312, 312, 312, 312, 312, 312, 52, - 308, 153, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 69, 71, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 264, 308, 308, 308, - 225, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 109, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 142, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 275, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 26, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 20, 312, 312, 312, 312, 312, 312, + 27, 36, 312, 153, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 69, 71, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 264, 312, + 312, 312, 225, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 109, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 142, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 147, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 207, 308, 308, 308, 308, 308, 308, 308, 308, - 284, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 164, 308, 308, 308, 308, 308, 308, 308, - 308, 103, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 159, 308, 171, 308, 308, 308, 308, 308, 131, - 308, 308, 308, 308, 308, 90, 308, 308, 308, 308, - 199, 308, 308, 308, 308, 308, 308, 215, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 279, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 147, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 273, 312, 312, 312, 207, 312, 312, 312, + 312, 312, 312, 312, 312, 288, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 164, 312, 312, + 312, 312, 312, 312, 312, 312, 103, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 159, 312, 171, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 236, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 124, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 163, 308, 308, 308, 308, 308, - 72, 73, 308, 308, 308, 308, 308, 53, 308, 308, - 308, 308, 308, 79, 172, 308, 190, 308, 218, 308, - 308, 182, 257, 308, 308, 308, 308, 308, 65, 308, - 174, 308, 308, 308, 308, 308, 9, 308, 308, 308, - 93, 308, 308, 308, 308, 249, 308, 308, 308, 198, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 131, 312, 312, 312, 312, 312, + 90, 312, 312, 312, 312, 199, 312, 312, 312, 312, + 312, 312, 215, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 236, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 124, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 163, + 312, 312, 312, 312, 312, 72, 73, 312, 312, 312, + 312, 312, 53, 312, 312, 312, 312, 312, 79, 172, + 312, 190, 312, 218, 312, 312, 182, 257, 312, 312, + 312, 312, 312, 65, 312, 174, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 162, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 149, 308, 263, 308, 308, 308, 308, 235, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 209, - 308, 308, 308, 308, 255, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 278, + 312, 9, 312, 312, 312, 312, 312, 93, 312, 312, + 312, 312, 249, 312, 312, 312, 198, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 162, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 149, 312, 263, + 312, 312, 312, 312, 235, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 209, 312, 312, 312, - 308, 173, 308, 308, 308, 308, 308, 308, 308, 64, - 66, 308, 308, 308, 308, 308, 308, 308, 92, 308, - 308, 308, 308, 247, 308, 308, 308, 259, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 203, - 34, 28, 30, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 35, 308, 29, 31, 308, 308, 308, 308, - 308, 308, 308, 308, 89, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 205, 202, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 255, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 282, 312, 173, 312, + 312, 312, 312, 312, 312, 312, 64, 66, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 92, 312, 312, + 312, 312, 247, 312, 312, 312, 259, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 203, 34, + 28, 30, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 35, 312, 29, 31, 312, 312, 312, 312, 312, + 312, 312, 312, 89, 312, 312, 312, 312, 312, 312, - 308, 63, 308, 308, 126, 308, 110, 308, 308, 308, - 308, 308, 308, 308, 308, 144, 13, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 273, 308, 276, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 12, - 308, 308, 22, 308, 308, 308, 253, 308, 308, 308, - 261, 308, 308, 308, 67, 308, 211, 308, 308, 308, - 308, 204, 308, 308, 62, 308, 308, 308, 308, 23, - 308, 43, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 158, 157, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 206, 200, 308, 216, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 205, 202, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 63, 312, 312, 126, 312, 110, 312, 312, 312, 312, + 312, 312, 312, 312, 144, 13, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 277, 312, 280, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 12, 312, + 312, 22, 312, 312, 312, 312, 312, 253, 312, 312, + 312, 261, 312, 312, 312, 67, 312, 211, 312, 312, + 312, 312, 204, 312, 312, 62, 312, 312, 312, 312, - 308, 265, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 74, - 308, 308, 308, 248, 308, 308, 308, 308, 186, 308, - 308, 308, 308, 210, 308, 308, 308, 308, 308, 308, - 308, 308, 282, 283, 155, 308, 308, 68, 308, 308, - 308, 308, 165, 308, 308, 104, 105, 308, 308, 308, - 308, 150, 308, 152, 308, 191, 308, 308, 308, 308, - 156, 308, 308, 219, 308, 308, 308, 308, 308, 308, - 308, 133, 308, 308, 308, 308, 308, 308, 308, 308, + 23, 312, 43, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 158, 157, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 206, 200, 312, 216, + 312, 312, 265, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 74, 312, 312, 312, 248, 312, 312, 312, 312, 186, + 312, 312, 312, 312, 210, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 286, 287, 155, 312, 312, + 68, 312, 312, 312, 312, 165, 312, 312, 104, 105, - 308, 308, 308, 226, 308, 308, 308, 308, 308, 308, - 308, 24, 308, 258, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 192, 308, 308, 246, 308, - 277, 308, 185, 308, 308, 308, 308, 48, 308, 308, - 308, 308, 4, 308, 308, 308, 117, 132, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 222, 37, 38, 308, - 308, 308, 308, 308, 308, 308, 266, 308, 308, 308, - 308, 308, 308, 234, 308, 308, 308, 308, 308, 308, - 308, 195, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 150, 312, 152, 312, 191, 312, + 312, 312, 312, 156, 312, 312, 219, 312, 312, 312, + 312, 312, 312, 312, 133, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 226, 312, 312, 312, + 312, 312, 312, 312, 24, 312, 258, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 192, 312, + 312, 246, 312, 281, 312, 185, 312, 312, 312, 312, + 48, 312, 312, 312, 312, 312, 312, 4, 312, 312, + 312, 117, 132, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 77, 308, 49, 252, 308, 223, 308, 308, 308, - 308, 11, 308, 308, 308, 308, 308, 116, 308, 308, - 308, 308, 193, 81, 308, 40, 308, 308, 308, 308, - 308, 308, 308, 308, 161, 308, 308, 308, 308, 308, - 135, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 233, 308, 308, 308, 308, 129, 308, 308, 111, 112, - 308, 308, 308, 83, 87, 82, 308, 75, 308, 308, - 308, 308, 308, 10, 308, 308, 308, 250, 308, 308, - 308, 308, 289, 39, 308, 308, 308, 308, 308, 160, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 222, 37, 38, 312, 312, 312, 312, 312, 312, + 312, 266, 312, 312, 312, 312, 312, 312, 234, 312, + 312, 312, 312, 312, 312, 312, 195, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 77, 312, 49, 252, + 312, 223, 312, 312, 312, 312, 11, 312, 312, 312, + 312, 312, 312, 312, 116, 312, 312, 312, 312, 193, + 81, 312, 40, 312, 312, 312, 312, 312, 312, 312, + 312, 161, 312, 312, 312, 312, 312, 135, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 233, 312, 312, + 312, 312, 129, 312, 312, 111, 112, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 88, 86, 308, 76, 274, 308, 308, 308, - 308, 308, 308, 308, 179, 308, 308, 308, 308, 308, - 194, 308, 308, 308, 308, 308, 308, 308, 308, 151, - 70, 308, 308, 308, 308, 308, 267, 308, 308, 308, - 308, 308, 308, 308, 230, 308, 308, 229, 130, 308, - 85, 136, 137, 140, 141, 138, 139, 78, 308, 251, - 308, 308, 308, 308, 154, 308, 308, 308, 308, 308, - 221, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 167, 166, + 83, 87, 82, 312, 75, 312, 312, 312, 312, 312, + 10, 312, 312, 312, 312, 312, 250, 312, 312, 312, + 312, 293, 39, 312, 312, 312, 312, 312, 160, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 88, 86, 312, 76, 278, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 179, 312, 312, 312, 312, + 312, 194, 312, 312, 312, 312, 312, 312, 312, 312, + 151, 70, 312, 312, 312, 312, 312, 267, 312, 312, + 312, 312, 312, 312, 312, 230, 312, 312, 229, 130, - 41, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 91, 308, 220, 308, 243, - 271, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 5, 308, 308, 212, 308, 308, 272, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 231, - 25, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 232, 308, 308, 308, 134, 308, 308, - 308, 308, 308, 308, 308, 308, 168, 308, 175, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 268, 308, + 312, 85, 136, 137, 140, 141, 138, 139, 78, 276, + 312, 312, 251, 312, 312, 312, 312, 154, 312, 312, + 312, 312, 312, 221, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 167, 166, 41, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 274, 312, 312, 312, 312, + 91, 312, 220, 312, 243, 271, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 5, 312, + 312, 212, 312, 312, 272, 312, 312, 312, 312, 312, + + 312, 312, 312, 312, 231, 25, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 232, 312, + 312, 312, 134, 312, 312, 312, 312, 312, 312, 312, + 312, 168, 312, 175, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 268, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 292, 312, 312, 239, 312, 312, 312, 312, 312, + 269, 312, 312, 312, 312, 312, 312, 270, 312, 312, + 312, 237, 312, 240, 241, 312, 312, 312, 312, 312, + 238, 242, 0 - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 288, 308, 308, 239, - 308, 308, 308, 308, 308, 269, 308, 308, 308, 308, - 308, 308, 270, 308, 308, 308, 237, 308, 240, 241, - 308, 308, 308, 308, 308, 238, 242, 0 } ; static const YY_CHAR yy_ec[256] = @@ -742,689 +748,699 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3063] = +static const flex_int16_t yy_base[3108] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2327, 1999, 81, 5940, 5940, 5940, 96, 52, + 90, 112, 1946, 1584, 81, 6029, 6029, 6029, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, - 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 1735, 5940, 5940, 5940, 107, 1527, 5940, 5940, - 5940, 165, 1302, 1259, 5940, 5940, 5940, 211, 1131, 5940, - 5940, 5940, 180, 948, 5940, 217, 5940, 221, 168, 767, - 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, - 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, - 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, + 76, 135, 141, 117, 163, 134, 151, 165, 174, 179, + 190, 145, 1331, 6029, 6029, 6029, 107, 1281, 6029, 6029, + 6029, 165, 1175, 1158, 6029, 6029, 6029, 212, 1094, 6029, + 6029, 6029, 216, 816, 6029, 220, 6029, 224, 157, 782, + 228, 234, 0, 240, 0, 0, 201, 225, 85, 182, + 176, 232, 234, 114, 236, 209, 241, 224, 238, 244, + 252, 248, 249, 256, 254, 258, 257, 259, 266, 271, - 279, 262, 282, 285, 270, 272, 291, 293, 290, 299, - 301, 284, 302, 305, 310, 312, 311, 315, 313, 319, - 322, 318, 324, 327, 326, 193, 221, 334, 329, 340, - 342, 325, 348, 349, 350, 353, 354, 357, 363, 359, - 723, 379, 595, 381, 503, 388, 450, 365, 392, 278, - 396, 400, 0, 377, 392, 401, 367, 394, 396, 402, - 261, 398, 399, 403, 405, 406, 418, 407, 416, 422, - 426, 430, 427, 434, 424, 437, 439, 440, 429, 451, - 453, 454, 446, 455, 456, 458, 461, 462, 477, 464, - 465, 463, 486, 472, 488, 490, 487, 498, 499, 475, + 279, 251, 278, 281, 282, 285, 289, 287, 292, 295, + 296, 297, 307, 300, 308, 310, 314, 313, 315, 320, + 322, 321, 161, 324, 331, 325, 159, 327, 329, 337, + 332, 342, 346, 352, 351, 354, 358, 357, 359, 360, + 356, 729, 381, 686, 383, 599, 390, 452, 286, 394, + 189, 398, 402, 0, 379, 394, 403, 387, 396, 398, + 364, 400, 401, 404, 409, 407, 415, 416, 418, 421, + 422, 431, 430, 432, 434, 429, 437, 439, 445, 438, + 455, 447, 454, 456, 460, 461, 462, 463, 464, 481, + 466, 472, 467, 490, 488, 497, 500, 486, 502, 504, - 506, 504, 511, 516, 512, 489, 514, 501, 517, 491, - 518, 515, 522, 524, 525, 529, 530, 537, 534, 535, - 538, 532, 547, 543, 552, 544, 551, 555, 548, 558, - 566, 569, 549, 576, 559, 572, 573, 578, 581, 585, - 582, 580, 583, 590, 587, 589, 591, 593, 592, 600, - 610, 607, 608, 620, 609, 605, 616, 617, 618, 596, - 628, 627, 623, 632, 638, 629, 636, 639, 641, 643, - 642, 644, 646, 656, 649, 659, 652, 666, 661, 667, - 664, 676, 651, 662, 672, 673, 674, 678, 677, 679, - 684, 687, 688, 690, 691, 685, 698, 696, 700, 713, + 474, 511, 507, 514, 515, 510, 522, 518, 519, 520, + 521, 523, 524, 526, 528, 529, 534, 477, 530, 542, + 543, 535, 547, 537, 552, 544, 560, 555, 556, 564, + 557, 558, 573, 574, 569, 577, 570, 465, 578, 581, + 589, 590, 585, 572, 586, 593, 592, 594, 596, 598, + 597, 606, 614, 610, 612, 619, 609, 618, 621, 622, + 623, 601, 633, 625, 635, 629, 641, 634, 642, 644, + 640, 646, 647, 649, 648, 660, 651, 664, 666, 669, + 655, 670, 662, 678, 673, 674, 675, 677, 679, 681, + 682, 683, 685, 688, 694, 689, 698, 691, 705, 708, - 701, 702, 704, 714, 715, 716, 724, 737, 727, 738, - 728, 734, 742, 743, 707, 750, 746, 744, 753, 754, - 756, 757, 761, 768, 769, 5940, 760, 773, 771, 774, - 782, 783, 784, 789, 785, 763, 796, 800, 797, 803, - 825, 791, 801, 804, 814, 795, 5940, 815, 807, 849, - 817, 827, 839, 831, 835, 823, 830, 850, 843, 853, - 840, 854, 855, 873, 857, 858, 870, 860, 871, 872, - 885, 881, 883, 884, 886, 894, 889, 891, 892, 901, - 893, 895, 902, 905, 904, 908, 916, 909, 915, 917, - 921, 922, 925, 927, 929, 923, 926, 933, 950, 931, + 697, 719, 712, 702, 710, 722, 713, 717, 714, 732, + 746, 741, 733, 742, 747, 749, 751, 724, 754, 755, + 748, 761, 762, 752, 767, 768, 775, 776, 6029, 770, + 773, 786, 784, 791, 792, 785, 798, 772, 793, 806, + 804, 805, 809, 831, 807, 808, 811, 813, 821, 6029, + 820, 824, 855, 825, 833, 849, 845, 815, 837, 844, + 853, 841, 872, 861, 863, 864, 881, 865, 873, 876, + 877, 879, 880, 897, 889, 882, 886, 894, 905, 900, + 901, 904, 913, 903, 906, 912, 907, 914, 915, 920, + 926, 918, 929, 930, 931, 933, 932, 936, 935, 938, - 945, 953, 943, 954, 941, 955, 958, 963, 960, 964, - 966, 974, 969, 970, 972, 975, 976, 978, 982, 983, - 984, 986, 988, 992, 989, 999, 990, 997, 1004, 1006, - 5940, 1007, 1009, 1011, 1012, 1013, 1010, 5940, 1014, 1015, - 1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043, - 1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062, - 1061, 1064, 1065, 1068, 1070, 1088, 5940, 1071, 1077, 1080, - 1079, 1085, 1082, 1090, 1097, 1100, 1093, 1106, 1116, 1103, - 1117, 1111, 1113, 1072, 1118, 1122, 1124, 1125, 1126, 1127, - 1128, 1130, 1129, 1132, 1140, 1136, 5940, 1144, 1145, 1154, + 948, 956, 943, 953, 951, 958, 960, 962, 966, 963, + 969, 970, 971, 972, 980, 977, 978, 979, 983, 985, + 986, 989, 991, 992, 994, 996, 998, 997, 1003, 1007, + 1005, 1013, 846, 6029, 1015, 1008, 1017, 1018, 1019, 1023, + 1021, 1020, 6029, 1024, 1030, 1022, 1037, 1034, 1039, 1046, + 1035, 1045, 1052, 1047, 1048, 1060, 1038, 1059, 1070, 1057, + 1067, 1065, 1068, 1069, 1074, 1066, 1075, 1076, 1077, 1078, + 1097, 6029, 1082, 1084, 1086, 1085, 1093, 1106, 1115, 1107, + 1095, 1112, 1118, 1114, 1121, 1126, 1125, 1130, 1131, 1133, + 1134, 1136, 1140, 1138, 1141, 1139, 1142, 1145, 1143, 1144, - 1147, 1152, 1156, 1157, 1158, 1160, 1161, 1163, 1162, 1166, - 1169, 1183, 1170, 1185, 1172, 1186, 1180, 1181, 1187, 1188, - 1190, 1195, 1203, 1200, 1205, 1208, 1216, 1215, 1218, 1225, - 1201, 1220, 1193, 1212, 1221, 1224, 1228, 1226, 1232, 1230, - 1241, 1236, 1237, 1238, 1239, 1248, 1245, 1244, 1253, 1246, - 1262, 1252, 1257, 1266, 1267, 1254, 1260, 5940, 1280, 1269, - 1276, 1277, 1282, 1283, 1284, 1285, 1288, 813, 1291, 1290, - 1292, 1294, 1296, 1297, 1298, 1299, 1307, 1315, 1311, 1310, - 1323, 1322, 1324, 1300, 1326, 1333, 1330, 1334, 1336, 1332, - 1344, 1341, 1342, 1331, 1352, 1345, 1347, 1348, 1349, 1357, + 1149, 6029, 1156, 1163, 1170, 1157, 1166, 1168, 1171, 1173, + 1083, 1172, 1177, 1178, 1174, 1184, 1192, 1179, 1195, 1193, + 1194, 1196, 1198, 1199, 1200, 1202, 1201, 1215, 1206, 1208, + 1223, 1226, 1225, 1228, 1235, 1212, 1231, 1232, 1230, 1236, + 1238, 1240, 1216, 1242, 1243, 1252, 1250, 1248, 1251, 1253, + 1263, 1255, 1258, 1259, 1264, 1268, 1265, 1270, 1274, 1275, + 1276, 1277, 6029, 1284, 1285, 1288, 1289, 1295, 1296, 1297, + 1287, 1298, 1301, 1304, 1305, 1306, 1312, 1309, 1313, 1307, + 1319, 1321, 1320, 1324, 1322, 1337, 1336, 1338, 1327, 1340, + 1341, 1329, 1350, 1342, 1355, 1353, 1352, 1364, 1359, 1360, - 1359, 1360, 1367, 1362, 1365, 1377, 1372, 1368, 1379, 1375, - 1380, 1383, 1384, 1385, 1386, 1387, 1395, 1388, 1390, 1391, - 1396, 1397, 1398, 1400, 1404, 1414, 1409, 1410, 1413, 1416, - 1420, 1418, 1421, 1425, 1426, 1427, 1428, 1429, 1434, 1431, - 1440, 1433, 1448, 1439, 1441, 1449, 1452, 1456, 1457, 1458, - 1465, 1454, 1466, 1467, 1468, 1469, 1471, 1474, 1477, 1481, - 1475, 1484, 1486, 1488, 1487, 1491, 1494, 1497, 1498, 5940, - 1492, 1505, 1500, 1506, 1504, 1509, 1512, 1519, 1514, 1517, - 1515, 1518, 1521, 1544, 5940, 1523, 5940, 5940, 1525, 5940, - 5940, 1526, 1531, 1529, 1528, 1539, 1546, 1548, 1536, 1551, + 1351, 1367, 1362, 1365, 1375, 1366, 1368, 1376, 1379, 1384, + 1377, 1385, 1393, 1394, 1388, 1396, 1391, 1399, 1400, 1402, + 1403, 1404, 1405, 1412, 1407, 1408, 1409, 1414, 1415, 1416, + 1419, 1422, 1432, 1427, 1428, 1430, 1434, 1438, 1436, 1439, + 1443, 1444, 1445, 1446, 1447, 1452, 1450, 1457, 1451, 1466, + 1458, 1459, 1467, 1470, 1476, 1472, 1482, 1483, 1473, 1485, + 1475, 1486, 1489, 1490, 1494, 1493, 1497, 1495, 1503, 1504, + 1506, 1505, 1508, 1513, 1511, 1515, 6029, 1516, 1523, 1518, + 1521, 1527, 1528, 1529, 1536, 1532, 1534, 1531, 1533, 1537, + 1559, 6029, 1545, 6029, 6029, 1544, 6029, 6029, 1542, 1546, - 1550, 1558, 1571, 1555, 1561, 1562, 1567, 1574, 1569, 1579, - 1584, 1576, 1587, 1593, 1594, 1595, 1602, 1603, 1596, 1599, - 1606, 1604, 1607, 1609, 1611, 1613, 1615, 1619, 1614, 1621, - 1616, 1631, 1622, 1635, 1642, 5940, 1639, 1643, 1646, 1645, - 1653, 1648, 1649, 1652, 1657, 1659, 1654, 1661, 1663, 1623, - 1664, 1666, 1667, 1669, 1678, 1670, 5940, 1671, 1673, 1681, - 1675, 1685, 1687, 1690, 1674, 1691, 1693, 1702, 1694, 1697, - 1698, 1705, 1557, 1707, 5940, 1709, 1716, 1703, 1708, 1719, - 1721, 1722, 1723, 1726, 1720, 1725, 1727, 1732, 1728, 1736, - 1734, 1737, 1733, 1739, 1738, 1751, 1754, 1756, 1757, 1758, + 1550, 1563, 1554, 1569, 1562, 1556, 1572, 1565, 1582, 1587, + 1543, 1575, 1577, 1583, 1590, 1598, 1600, 1601, 1603, 1609, + 1611, 1612, 1614, 1621, 1622, 1580, 1604, 1613, 1625, 1627, + 1626, 1628, 1632, 1630, 1635, 1631, 1638, 1633, 1643, 1648, + 1640, 1657, 6029, 1654, 1658, 1666, 1662, 1669, 1661, 1665, + 1668, 1642, 1673, 1670, 1674, 1675, 1677, 1679, 1682, 1681, + 1686, 1687, 1683, 1694, 1689, 6029, 1690, 1693, 1701, 1695, + 1707, 1709, 1703, 1705, 1711, 1712, 1719, 1715, 1721, 1722, + 1723, 1724, 1726, 6029, 1731, 1728, 1734, 1735, 1738, 1742, + 1743, 1739, 1744, 1745, 1746, 1747, 1749, 1752, 1756, 1757, - 1760, 1761, 1762, 1763, 1764, 1766, 1774, 1770, 1778, 1771, - 1779, 1781, 1788, 1776, 1787, 1789, 1790, 1796, 1804, 1800, - 1801, 1793, 1808, 1805, 1810, 1812, 1813, 1815, 1816, 1817, - 1822, 1820, 1824, 1827, 1826, 5940, 1828, 1829, 5940, 1833, - 1834, 1856, 1835, 1837, 1839, 1847, 1838, 1858, 1849, 1857, - 1868, 1860, 1876, 1866, 1878, 1869, 1881, 1879, 1883, 1885, - 1887, 1889, 1892, 1901, 1906, 1851, 1902, 1910, 1890, 1905, - 1893, 1925, 1907, 1909, 1913, 1916, 1917, 1915, 1840, 1921, - 1922, 1923, 1930, 1932, 5940, 1940, 1943, 1937, 1947, 1954, - 1950, 1938, 5940, 1949, 1952, 1953, 1965, 1962, 1963, 1967, + 1753, 1758, 1760, 1770, 1768, 1773, 1780, 1772, 1775, 1781, + 1783, 1785, 1786, 1787, 1789, 1794, 1790, 1799, 1795, 1802, + 1803, 1807, 1798, 1800, 1813, 1810, 1821, 1825, 1823, 1814, + 1816, 1830, 1827, 1834, 1828, 1835, 1837, 1838, 1839, 1841, + 1844, 1845, 1849, 1848, 6029, 1850, 1855, 6029, 1851, 1852, + 1875, 1856, 1858, 1861, 1860, 1863, 1864, 1870, 1879, 1872, + 1881, 1898, 1887, 1890, 1889, 1900, 1899, 1902, 1903, 1908, + 1909, 1910, 1918, 1919, 1883, 1925, 1927, 1914, 1922, 1924, + 1943, 1926, 1928, 1931, 1934, 1939, 1930, 1947, 1950, 1937, + 1948, 1953, 1954, 6029, 1965, 1968, 1960, 1961, 1972, 1970, - 1964, 1966, 1968, 1973, 1970, 1974, 1975, 1976, 1992, 5940, - 1978, 5940, 1977, 1987, 1989, 1990, 1995, 1996, 1997, 1998, - 5940, 5940, 2000, 2001, 2014, 2012, 2009, 5940, 2016, 2024, - 2025, 2017, 2019, 2021, 2027, 2030, 2031, 2034, 2035, 2042, - 2037, 2039, 2040, 5940, 2047, 2038, 2048, 2051, 2049, 2057, - 2058, 2060, 5940, 2061, 2064, 2068, 2075, 2071, 2073, 2066, - 2076, 2077, 2081, 2083, 2085, 2086, 2087, 2094, 2096, 2092, - 2093, 2101, 2109, 5940, 2095, 2091, 2110, 2107, 2115, 2108, - 2116, 2118, 2119, 2120, 2121, 2124, 2126, 2127, 2134, 2135, - 2130, 2139, 2141, 2131, 2133, 2137, 2152, 2143, 2151, 2153, + 1973, 6029, 1976, 1977, 1978, 1987, 1980, 1982, 1983, 1984, + 1991, 1990, 1995, 1993, 1997, 2003, 1996, 2014, 6029, 1999, + 6029, 1998, 2000, 2011, 2017, 2016, 2018, 2019, 2021, 6029, + 6029, 2022, 2023, 2028, 2041, 2036, 2025, 2037, 6029, 2038, + 2048, 2051, 2043, 2039, 2044, 2049, 2056, 2057, 2065, 2058, + 2066, 2061, 2063, 2070, 6029, 2071, 2062, 2075, 2077, 2073, + 2081, 2085, 2079, 6029, 2087, 2088, 2092, 2100, 2096, 2097, + 2099, 2102, 2107, 2101, 2103, 2109, 2110, 2111, 2118, 2120, + 2116, 2123, 2125, 2132, 6029, 2115, 2127, 2137, 2134, 2136, + 2140, 2141, 2138, 2142, 2143, 2144, 2148, 2151, 2152, 2159, - 2154, 5940, 2155, 2157, 124, 2159, 2162, 2158, 2163, 2166, - 2165, 2167, 2182, 2184, 2180, 2169, 2181, 2183, 2188, 2189, - 2190, 2191, 2192, 2193, 2195, 5940, 2201, 2198, 2203, 2196, - 2207, 2204, 2215, 5940, 2216, 2218, 2226, 2228, 2219, 2206, - 2222, 2227, 2230, 2232, 2236, 2238, 2240, 2242, 5940, 2247, - 2244, 2248, 2250, 2252, 2254, 2256, 2259, 2260, 2262, 2264, - 2263, 2266, 2267, 2268, 2269, 2271, 2277, 2280, 2272, 2282, - 2284, 5940, 2291, 2286, 2288, 2294, 2298, 2297, 2305, 2301, - 2307, 2306, 2310, 2322, 2312, 2308, 2324, 2315, 2323, 2329, - 2332, 2334, 2337, 2343, 2333, 2346, 2348, 2336, 2340, 2350, + 2160, 2157, 2162, 2165, 2158, 2161, 2168, 2173, 2170, 2174, + 2176, 2178, 6029, 2179, 2182, 124, 2185, 2186, 2184, 2187, + 2191, 2190, 2193, 2208, 2210, 2206, 2205, 2209, 2212, 2215, + 2216, 2217, 2218, 2220, 2219, 2222, 6029, 2224, 2225, 2228, + 2230, 2236, 2231, 2233, 6029, 2243, 2235, 2254, 2248, 2250, + 2194, 2256, 2258, 2257, 2260, 2259, 2262, 2261, 2263, 6029, + 2269, 2274, 2280, 2270, 2281, 2273, 2283, 2284, 2287, 2288, + 2289, 2291, 2293, 2296, 2294, 2295, 2297, 2298, 2303, 2305, + 2309, 2310, 6029, 2317, 2312, 2314, 2320, 2323, 2321, 2336, + 2324, 2327, 2331, 2337, 2345, 2334, 2339, 2352, 2355, 2357, - 2349, 2352, 2360, 2355, 2367, 2368, 2365, 2371, 2363, 2384, - 2389, 2380, 5940, 2378, 2388, 2376, 2390, 2398, 2393, 2395, - 2396, 2402, 2401, 2404, 2405, 2412, 2407, 2409, 2413, 2416, - 2414, 2422, 2418, 2424, 2425, 2433, 2426, 2435, 2364, 5940, - 2437, 2438, 2429, 2442, 2445, 2439, 2447, 2452, 2450, 2454, - 2456, 2458, 2460, 2461, 2462, 2463, 2465, 2467, 2466, 5940, - 2470, 2471, 2476, 2478, 2479, 2485, 2488, 2491, 2489, 2495, - 2496, 2497, 2498, 5940, 2505, 2506, 2503, 2507, 2509, 2510, - 2512, 2515, 2516, 5940, 2517, 2519, 2526, 2527, 2522, 5940, - 2530, 2525, 2531, 2532, 2533, 2534, 2540, 2535, 2538, 2543, + 2342, 2365, 2361, 2367, 2369, 2360, 2373, 2375, 2363, 2371, + 2376, 2377, 2379, 2382, 2386, 2393, 2394, 2390, 2398, 2391, + 2401, 2399, 2414, 2419, 2392, 6029, 2408, 2410, 2418, 2420, + 2427, 2422, 2423, 2424, 2430, 2431, 2432, 2433, 2440, 2441, + 2435, 2445, 2448, 2446, 2449, 2437, 2452, 2456, 2463, 2454, + 2465, 2466, 6029, 2467, 2471, 2472, 2473, 2475, 2478, 2480, + 2483, 2481, 2485, 2487, 2489, 2490, 2492, 2493, 2494, 2496, + 2500, 2497, 6029, 2501, 2503, 2507, 2509, 2511, 2516, 2517, + 2523, 2520, 2526, 2527, 2528, 2529, 6029, 2536, 2537, 2534, + 2538, 2540, 2541, 2543, 2546, 2547, 6029, 2548, 2550, 2557, - 2548, 2550, 2546, 2554, 5940, 2556, 2566, 2558, 2562, 2564, - 2567, 2568, 2570, 2574, 2578, 2573, 5940, 2590, 2589, 2586, - 2600, 2577, 2591, 2592, 2598, 2595, 2601, 2602, 5940, 2604, - 2605, 2607, 2608, 2611, 2612, 2614, 2626, 2616, 2619, 2621, - 2624, 2627, 2629, 2631, 2634, 2632, 2640, 2643, 2644, 2646, - 2647, 2649, 2650, 2657, 2660, 2662, 2664, 5940, 2667, 2668, - 2669, 2656, 2659, 2671, 2675, 2676, 2679, 2680, 2684, 2681, - 2683, 2691, 2693, 2694, 2696, 2698, 2700, 2701, 2703, 2704, - 2705, 2706, 2713, 2711, 2709, 2718, 2715, 2720, 2727, 2722, - 2728, 2729, 2730, 2731, 2732, 2736, 2737, 2739, 2740, 2744, + 2558, 2553, 6029, 2561, 2556, 2562, 2563, 2564, 2565, 2571, + 2566, 2569, 2574, 2579, 2581, 2577, 2585, 6029, 2587, 2597, + 2589, 2593, 2595, 2598, 2599, 2601, 2605, 2609, 2604, 6029, + 2621, 2620, 2617, 2631, 2608, 2622, 2623, 2629, 2626, 2632, + 2633, 6029, 2635, 2636, 2638, 2639, 2642, 2643, 2645, 2657, + 2647, 2650, 2652, 2655, 2658, 2660, 2662, 2665, 2663, 2671, + 2674, 2675, 2677, 2678, 2680, 2681, 2688, 2691, 2693, 2695, + 6029, 2698, 2699, 2700, 2687, 2690, 2702, 2706, 2707, 2710, + 2711, 2715, 2712, 2714, 2722, 2724, 2725, 2727, 2729, 2731, + 2732, 2734, 2735, 2736, 2737, 2744, 2742, 2740, 2749, 2746, - 2755, 2756, 2746, 2757, 2758, 2759, 2760, 5940, 2763, 2765, - 2764, 2769, 2774, 2771, 2781, 2777, 2778, 2782, 2786, 2789, - 2783, 2788, 2794, 2801, 2797, 5940, 2798, 5940, 2799, 2800, - 2807, 2810, 2802, 5940, 2812, 5940, 2815, 2824, 2809, 2813, - 5940, 2827, 2817, 2819, 2831, 2821, 2826, 2833, 2834, 2835, - 2840, 2838, 2842, 2843, 2844, 2846, 2848, 2850, 2854, 2859, - 2861, 2851, 2862, 2853, 2867, 2870, 2864, 2872, 5940, 2880, - 2873, 2876, 2881, 2882, 2884, 2885, 2887, 2888, 2893, 2889, - 2894, 2895, 2902, 2905, 2903, 2906, 2917, 5940, 2907, 2919, - 2912, 2914, 5940, 2922, 2916, 2923, 2928, 2925, 2930, 2932, + 2751, 2758, 2753, 2759, 2760, 2761, 2762, 2763, 2767, 2768, + 2770, 2764, 2771, 2774, 2788, 2792, 2789, 2777, 2785, 2793, + 2795, 2797, 6029, 2796, 2800, 2804, 2805, 2807, 2809, 2817, + 2810, 2813, 2818, 2827, 2828, 2819, 2812, 2820, 2835, 2834, + 6029, 2836, 6029, 2822, 2837, 2844, 2847, 2838, 6029, 2849, + 6029, 2850, 2852, 2846, 2855, 6029, 2856, 2857, 2860, 2863, + 2861, 2865, 2866, 2867, 2868, 2873, 2870, 2875, 2878, 2879, + 2881, 2883, 2884, 2887, 2892, 2893, 2894, 2898, 2896, 2900, + 2904, 2905, 2907, 6029, 2910, 2913, 2906, 2915, 2916, 2917, + 2921, 2923, 2919, 2925, 2927, 2932, 2926, 2938, 2943, 2947, - 2933, 2934, 2937, 2938, 2950, 2951, 2941, 2952, 5940, 2954, - 2957, 2942, 2961, 2965, 2969, 2943, 2972, 2966, 2970, 2976, - 2977, 2978, 2979, 2980, 2987, 2988, 2985, 2992, 2984, 2991, - 2994, 2998, 3000, 3001, 3002, 3005, 3006, 3004, 3010, 3014, - 3009, 3011, 3012, 3013, 5940, 3025, 3015, 3027, 3036, 3028, - 3030, 3017, 3033, 3038, 3039, 3042, 3046, 3040, 5940, 3045, - 5940, 3048, 3050, 3062, 3064, 3057, 3052, 3068, 3067, 3059, - 3074, 3075, 3076, 3077, 3078, 3079, 3082, 3083, 3089, 3090, - 3086, 3087, 3091, 3097, 3099, 3100, 3102, 5940, 5940, 3103, - 3105, 3108, 3106, 3110, 3112, 3120, 3118, 3111, 3124, 3125, + 2929, 2950, 6029, 2951, 2953, 2954, 2955, 6029, 2957, 2956, + 2958, 2963, 2960, 2966, 2967, 2968, 2969, 2975, 2972, 2983, + 2985, 2976, 2988, 6029, 2990, 2993, 2977, 2994, 3006, 3003, + 2995, 3004, 3015, 3011, 3010, 3012, 3013, 3014, 3017, 3024, + 3025, 3021, 3028, 3027, 3031, 3038, 3035, 3029, 3033, 3039, + 3041, 3042, 3045, 3048, 3049, 3044, 3046, 3051, 3052, 6029, + 3063, 3054, 3067, 3068, 3060, 3070, 3058, 3071, 3076, 3077, + 3079, 3078, 3080, 6029, 3083, 6029, 3081, 3088, 3094, 3100, + 3095, 3097, 3101, 3109, 3105, 3102, 3111, 3112, 3110, 3114, + 3113, 3119, 3123, 3124, 3126, 3128, 3125, 3131, 3134, 3136, - 3132, 5940, 3133, 3134, 3136, 3137, 3144, 3139, 3141, 3152, - 3148, 3156, 3154, 5940, 3151, 3155, 3165, 3161, 3163, 3168, - 5940, 3167, 5940, 3164, 3170, 3173, 3176, 3177, 3178, 3179, - 3180, 3187, 3188, 3198, 3184, 3195, 3196, 3199, 3200, 3207, - 3202, 3203, 3204, 5940, 3206, 3209, 3212, 3220, 3221, 3223, - 3227, 3210, 5940, 3217, 3231, 3234, 3235, 3237, 3239, 3240, - 3241, 3243, 3245, 3242, 3244, 3252, 3250, 3249, 3259, 3269, - 3260, 3271, 5940, 3272, 3266, 3279, 3281, 3274, 3276, 3282, - 3283, 3284, 3287, 3289, 3288, 3290, 3292, 3294, 3291, 3301, - 3295, 3308, 3297, 3311, 3317, 3318, 3298, 3314, 3321, 3322, + 3137, 3147, 3143, 3139, 6029, 6029, 3140, 3142, 3154, 3156, + 3149, 3157, 3163, 3159, 3161, 3166, 3167, 3175, 6029, 3170, + 3173, 3176, 3177, 3186, 3181, 3190, 3197, 3195, 3202, 3201, + 6029, 3183, 3192, 3210, 3205, 3208, 3215, 6029, 3212, 6029, + 3194, 3214, 3216, 3219, 3221, 3222, 3223, 3225, 3227, 3236, + 3238, 3229, 3231, 3240, 3241, 3243, 3250, 3245, 3246, 3247, + 6029, 3253, 3249, 3255, 3261, 3263, 3270, 3264, 3254, 6029, + 3257, 3279, 3271, 3274, 3276, 3281, 3282, 3284, 3285, 3287, + 3283, 3288, 3298, 3289, 3293, 3294, 3304, 3306, 3313, 6029, + 3305, 3307, 3320, 3318, 3315, 3319, 3322, 3323, 3324, 3326, - 3325, 3324, 3328, 3331, 3335, 3332, 3344, 3345, 3336, 3339, - 3348, 3349, 3356, 3351, 5940, 3361, 3341, 3364, 3362, 3363, - 3368, 3369, 3371, 3372, 3373, 3374, 3381, 3376, 5940, 3383, - 3378, 3388, 3389, 3380, 3403, 3398, 3379, 3401, 3405, 3402, - 3408, 3406, 3410, 3411, 3414, 3415, 5940, 5940, 3417, 3418, - 3420, 5940, 3421, 3419, 3431, 3424, 3427, 3434, 3251, 3433, - 3436, 3437, 3439, 3441, 5940, 3445, 3452, 3444, 3447, 3459, - 3461, 3467, 3451, 3460, 3458, 3463, 3468, 3470, 3471, 3472, - 3474, 3483, 3476, 3479, 3481, 5940, 3484, 3486, 3487, 3491, - 3488, 3495, 5940, 3493, 3499, 3500, 3502, 3514, 3505, 3515, + 3329, 3328, 3330, 3336, 3334, 3332, 3331, 3335, 3345, 3351, + 3352, 3342, 3360, 3338, 3358, 3362, 3361, 3363, 3366, 3368, + 3371, 3373, 3364, 3375, 3385, 3376, 3379, 3388, 3389, 3396, + 3391, 6029, 3398, 3383, 3405, 3395, 3403, 3408, 3409, 3417, + 3402, 3404, 3412, 3419, 3418, 6029, 3428, 3423, 3429, 3425, + 3426, 3439, 3434, 3430, 3435, 3445, 3440, 3446, 3442, 3448, + 3451, 3454, 3449, 6029, 6029, 3458, 3455, 3459, 6029, 3463, + 3460, 3467, 3465, 3471, 3473, 3475, 3474, 3476, 3477, 3479, + 3484, 6029, 3485, 3493, 3486, 3489, 3497, 3499, 6029, 3494, + 3504, 3508, 3509, 3503, 3495, 3510, 3511, 3516, 3517, 3518, - 3517, 3497, 3519, 3520, 3522, 3521, 3523, 3530, 3525, 3529, - 3536, 3537, 3528, 5940, 3542, 3544, 3545, 3547, 3549, 3558, - 3556, 3559, 3554, 3561, 3562, 3569, 5940, 3564, 3567, 3570, - 3568, 3578, 3573, 3581, 3577, 5940, 3579, 3583, 3585, 5940, - 3584, 3596, 3599, 3601, 3586, 3594, 3603, 3605, 3607, 3608, - 5940, 3611, 5940, 3612, 3592, 3618, 5940, 3614, 3620, 3622, - 3624, 3621, 3628, 3629, 3636, 3625, 3631, 3637, 3638, 3639, - 3641, 3648, 3644, 3647, 3649, 3650, 5940, 3651, 3653, 3659, - 3660, 3665, 3654, 3658, 3670, 3669, 5940, 5940, 3673, 5940, - 3677, 3676, 3678, 5940, 3681, 3683, 3690, 3685, 3686, 3689, + 3520, 3528, 3525, 3524, 3526, 6029, 3527, 3531, 3532, 3534, + 3536, 3541, 6029, 3538, 3548, 3543, 3542, 3559, 3550, 3560, + 3562, 3563, 3564, 3566, 3565, 3567, 3568, 3575, 3574, 3572, + 3580, 3581, 3586, 6029, 3583, 3591, 3573, 3595, 3597, 3604, + 3605, 3606, 3601, 3608, 3609, 3616, 6029, 3611, 3614, 3612, + 3615, 3625, 3617, 3626, 3622, 6029, 3629, 3628, 3630, 6029, + 3633, 3631, 3638, 3643, 3644, 3651, 3646, 3648, 3649, 3650, + 6029, 3656, 6029, 3654, 3658, 3662, 6029, 3660, 3665, 3666, + 3668, 3669, 3674, 3675, 3682, 3673, 3676, 3683, 3684, 3686, + 3687, 3694, 3689, 3691, 3695, 3696, 6029, 3697, 3699, 3702, - 3699, 3693, 5940, 3688, 3700, 3703, 3705, 3706, 3707, 3709, - 3710, 3708, 3711, 3712, 5940, 3713, 3716, 3724, 3717, 3725, - 3729, 3736, 3730, 5940, 3737, 3738, 3739, 3743, 3744, 5940, - 3746, 5940, 3747, 3749, 3752, 3754, 3753, 5940, 3759, 3760, - 3763, 3766, 3768, 3767, 3770, 3771, 3777, 3778, 3785, 3781, - 3780, 3782, 5940, 3783, 3787, 3789, 3796, 3784, 3791, 3800, - 3803, 3804, 3805, 3810, 3807, 3814, 3816, 3818, 3820, 3812, - 5940, 3822, 3824, 3823, 3838, 3833, 3828, 5940, 3829, 3843, - 3845, 5940, 3836, 3835, 3847, 3852, 3839, 3846, 3853, 3854, - 3858, 5940, 3859, 3860, 3861, 3862, 3865, 3866, 5940, 5940, + 3704, 3706, 3708, 3712, 3714, 3716, 6029, 6029, 3722, 6029, + 3723, 3718, 3724, 6029, 3727, 3725, 3736, 2332, 3731, 3735, + 3744, 3738, 6029, 3741, 3745, 3749, 3747, 3751, 3752, 3754, + 3755, 3753, 3758, 3757, 6029, 3760, 3759, 3762, 3768, 3769, + 3774, 3770, 3778, 6029, 3782, 3781, 3784, 3785, 3788, 6029, + 3791, 6029, 3792, 3794, 3793, 3797, 3796, 6029, 3804, 3807, + 3809, 3801, 3811, 3812, 3813, 3817, 3819, 3820, 3829, 3825, + 3826, 3824, 3834, 3835, 6029, 3831, 3832, 3842, 3844, 3838, + 3847, 3854, 3851, 3855, 3852, 3859, 3849, 3862, 3864, 3866, + 3869, 3870, 6029, 3871, 3876, 3872, 3885, 3873, 3877, 6029, - 3874, 5940, 3876, 3863, 3877, 3878, 3879, 3885, 3884, 3888, - 3890, 3887, 3891, 3898, 3899, 3908, 3911, 3915, 3910, 3914, - 3900, 5940, 5940, 3917, 3918, 3921, 3924, 3925, 3927, 3928, - 3935, 3931, 3937, 3941, 3942, 3949, 5940, 3948, 3934, 3951, - 5940, 3932, 3945, 3953, 3956, 3958, 3959, 3962, 3960, 3961, - 3964, 3968, 3965, 3970, 3974, 3972, 3975, 3973, 3983, 3981, - 3982, 3990, 5940, 3991, 3984, 3993, 3995, 3996, 3997, 4001, - 4002, 4004, 5940, 4006, 4008, 4010, 4011, 4005, 4015, 4026, - 4030, 4032, 4023, 4033, 4034, 4036, 4040, 4037, 5940, 4044, - 4041, 4043, 4047, 4051, 4053, 4054, 4056, 4057, 4065, 4062, + 3886, 3887, 3890, 6029, 3881, 3891, 3896, 3900, 3897, 3901, + 3902, 3903, 3906, 6029, 3904, 3908, 3907, 3909, 3923, 3913, + 6029, 6029, 3924, 6029, 3925, 3910, 3926, 3929, 3912, 3935, + 3939, 3936, 3949, 3932, 3942, 3950, 3940, 3958, 3960, 3962, + 3961, 3959, 3963, 6029, 6029, 3966, 3969, 3968, 3972, 3973, + 3975, 3976, 3985, 3981, 3988, 3991, 3992, 3999, 6029, 3978, + 3980, 3998, 6029, 3996, 4001, 4003, 4004, 4005, 4007, 4008, + 4009, 4011, 4012, 4014, 4018, 4015, 4023, 4017, 4020, 4027, + 4031, 4035, 4033, 4038, 6029, 4039, 4040, 4041, 4042, 4044, + 4045, 4049, 4050, 4052, 6029, 4054, 4056, 4058, 4053, 4057, - 4066, 4068, 4070, 4058, 4074, 4076, 4060, 5940, 4080, 4082, - 4078, 4087, 4084, 4088, 4089, 4095, 4099, 4091, 4093, 4100, - 4104, 5940, 4101, 4105, 4107, 4109, 4115, 4106, 4112, 4116, - 5940, 4118, 4120, 4123, 4124, 4126, 4129, 4132, 4133, 4136, - 4135, 4139, 5940, 4141, 4143, 4146, 4149, 4150, 4152, 4155, - 4154, 5940, 4156, 4162, 4164, 4171, 4166, 4175, 4172, 4176, - 4168, 4170, 4182, 4186, 4188, 4189, 4190, 4178, 4200, 4202, - 4201, 5940, 4184, 5940, 4203, 4206, 4214, 4209, 4191, 5940, - 4215, 4216, 4220, 4221, 4217, 5940, 4222, 4223, 4225, 4229, - 5940, 4224, 4228, 4230, 4235, 4238, 4242, 5940, 4245, 4246, + 4063, 4074, 4078, 4080, 4067, 4072, 4083, 4081, 4087, 4089, + 6029, 4091, 4088, 4092, 4095, 4098, 4100, 4101, 4103, 4104, + 4106, 4109, 4110, 4114, 4117, 4111, 4118, 4119, 4121, 6029, + 4123, 4130, 4126, 4132, 4134, 4135, 4136, 4137, 4143, 4144, + 4146, 4147, 6029, 4150, 4148, 4155, 6029, 4151, 4156, 4157, + 4158, 4160, 4164, 4166, 4169, 6029, 4174, 4168, 4170, 4175, + 4176, 4178, 4180, 4185, 4182, 4190, 4195, 6029, 4187, 4197, + 4200, 4193, 4201, 4203, 4204, 4207, 6029, 4211, 4212, 4208, + 4225, 4210, 4226, 4222, 4229, 4221, 4228, 4232, 4230, 4236, + 4238, 4240, 4237, 4248, 4250, 4252, 6029, 4243, 6029, 4253, - 4248, 4257, 4258, 4255, 4256, 4259, 4261, 4262, 4263, 4264, - 4272, 4267, 4269, 5940, 4271, 4277, 4279, 4283, 4284, 4285, - 4286, 4292, 4287, 5940, 4289, 4295, 4296, 4297, 4298, 4299, - 4301, 4309, 4304, 4307, 5940, 4308, 4312, 4320, 4009, 4321, - 5940, 5940, 4313, 4328, 4330, 4318, 4331, 5940, 4322, 4340, - 4335, 4337, 4339, 5940, 5940, 4342, 5940, 4338, 5940, 4343, - 4345, 5940, 5940, 4346, 4349, 4350, 4353, 4360, 5940, 4363, - 5940, 4370, 4365, 4352, 4354, 4367, 5940, 4369, 4371, 4374, - 5940, 4377, 4384, 4379, 4380, 5940, 4382, 4385, 4387, 5940, - 4389, 4392, 4393, 4394, 4399, 4396, 4400, 4403, 4406, 4407, + 4254, 4264, 4259, 4257, 6029, 4265, 4266, 4270, 4261, 4271, + 6029, 4272, 4267, 4273, 4274, 6029, 4275, 4285, 4287, 4289, + 4292, 4293, 6029, 4296, 4297, 4298, 4305, 4308, 4310, 4304, + 4311, 4313, 4306, 4314, 4315, 4323, 4321, 4319, 6029, 4322, + 4327, 4329, 4331, 4332, 4334, 4338, 4340, 4337, 6029, 4343, + 4344, 4345, 4346, 4347, 4349, 4352, 4359, 4355, 4356, 6029, + 4362, 4358, 4372, 4367, 4368, 6029, 6029, 4371, 4376, 4379, + 4373, 4380, 6029, 4383, 4390, 4386, 4389, 4391, 6029, 6029, + 4393, 6029, 4394, 6029, 4395, 4397, 6029, 6029, 4396, 4402, + 4403, 4405, 4407, 6029, 4415, 6029, 4417, 4418, 4404, 4416, - 4409, 4410, 4411, 4422, 4424, 4426, 4428, 4429, 4413, 4432, - 4433, 4435, 4438, 4439, 4440, 4442, 4444, 4445, 4447, 4449, - 4452, 4453, 4454, 4455, 4456, 4457, 4459, 4466, 4469, 4471, - 4470, 4472, 4474, 4473, 4475, 4477, 4481, 4483, 4484, 5940, - 4482, 4485, 4488, 4415, 4491, 4501, 4503, 4494, 4510, 4512, - 5940, 4514, 5940, 4516, 4502, 4518, 4504, 5940, 4519, 4522, - 4521, 4524, 4525, 4526, 4528, 4527, 4531, 4532, 4535, 5940, - 4538, 4533, 4542, 4553, 5940, 4545, 4557, 4541, 4548, 4558, - 4560, 4561, 4562, 4567, 4563, 4569, 4571, 4578, 4573, 4574, - 4576, 4581, 4564, 4577, 4585, 4592, 4588, 4596, 4600, 5940, + 4421, 6029, 4422, 4424, 4423, 4425, 4430, 6029, 4431, 4439, + 4432, 4434, 6029, 4443, 4436, 4444, 6029, 4445, 4448, 4451, + 4452, 4454, 4453, 4457, 4460, 4461, 4464, 4466, 4465, 4467, + 4469, 4478, 4480, 4482, 4483, 4473, 4484, 4486, 4492, 4488, + 4490, 4494, 4496, 4498, 4499, 4504, 4506, 4508, 4501, 4509, + 4510, 4507, 4515, 4511, 4517, 4524, 4521, 4525, 4526, 4528, + 4529, 4533, 4534, 4536, 4539, 4540, 6029, 4532, 4538, 4542, + 4549, 4543, 4556, 4558, 4567, 4569, 4570, 6029, 4572, 6029, + 4574, 4544, 4548, 4564, 6029, 4576, 4577, 4578, 4579, 4580, + 4581, 4582, 4585, 4586, 4588, 4590, 6029, 4593, 4587, 4594, - 4593, 5940, 4601, 4602, 4603, 4604, 4606, 4605, 4607, 5940, - 5940, 4608, 4613, 4618, 4614, 4609, 4620, 4630, 5940, 4622, - 4631, 4633, 4623, 5940, 4638, 4639, 4641, 5940, 4642, 4643, - 4644, 4646, 4647, 4650, 4651, 4653, 4655, 4657, 4661, 5940, - 5940, 5940, 5940, 4663, 4665, 4668, 4670, 4672, 4673, 4675, - 4677, 4674, 5940, 4679, 5940, 5940, 4681, 4688, 4680, 4690, - 4691, 4692, 4696, 4698, 5940, 4697, 4702, 4703, 4700, 4710, - 4714, 4716, 4717, 4701, 4718, 4726, 4724, 4727, 4725, 4730, - 4732, 4734, 5940, 5940, 4737, 4739, 4741, 4748, 4746, 4749, - 4758, 4753, 4755, 4756, 4759, 4761, 4743, 4768, 4772, 4770, + 4598, 6029, 4602, 4608, 4610, 4612, 4613, 4614, 4615, 4616, + 4619, 4617, 4622, 4624, 4631, 4626, 4627, 4618, 4638, 4632, + 4639, 4640, 4646, 4650, 4651, 4655, 6029, 4641, 6029, 4647, + 4657, 4658, 4661, 4662, 4663, 4665, 6029, 6029, 4666, 4668, + 4673, 4664, 4669, 4675, 4677, 4678, 4685, 6029, 4680, 4690, + 4692, 4696, 6029, 4682, 4697, 4699, 6029, 4700, 4701, 4703, + 4705, 4706, 4714, 4711, 4715, 4718, 4708, 4722, 6029, 6029, + 6029, 6029, 4726, 4719, 4729, 4723, 4730, 4731, 4733, 4738, + 4732, 6029, 4745, 6029, 6029, 4746, 4748, 4735, 4750, 4752, + 4739, 4754, 4756, 6029, 4757, 4761, 4762, 4759, 4769, 4771, - 4767, 5940, 4771, 4777, 5940, 4773, 5940, 4778, 4781, 4745, - 4782, 4784, 4787, 4788, 4790, 5940, 5940, 4791, 4792, 4794, - 4798, 4800, 4802, 4801, 4804, 4805, 5940, 4806, 5940, 4807, - 4814, 4809, 4815, 4823, 4826, 4828, 4830, 4825, 4831, 5940, - 4832, 4834, 5940, 4835, 4837, 4838, 5940, 4842, 4845, 4849, - 5940, 4855, 4846, 4852, 5940, 4859, 5940, 4856, 4860, 4861, - 4868, 5940, 4863, 4869, 5940, 4872, 4875, 4877, 4866, 5940, - 4864, 5940, 4878, 4885, 4886, 4889, 4881, 4891, 4892, 4893, - 4894, 4901, 4900, 4902, 5940, 5940, 4910, 4897, 4903, 4907, - 4912, 4919, 4914, 4917, 4916, 5940, 5940, 4924, 5940, 4922, + 4773, 4776, 4765, 4775, 4784, 4777, 4785, 4779, 4787, 4789, + 4791, 6029, 6029, 4795, 4797, 4798, 4805, 4802, 4806, 4809, + 4810, 4812, 4813, 4800, 4816, 4818, 4825, 4826, 4823, 4821, + 6029, 4827, 4831, 6029, 4829, 6029, 4830, 4837, 4836, 4838, + 4840, 4843, 4844, 4846, 6029, 6029, 4847, 4848, 4850, 4857, + 4853, 4858, 4859, 4861, 4862, 6029, 4863, 6029, 4864, 4871, + 4877, 4865, 4879, 4886, 4888, 4892, 4885, 4889, 6029, 4887, + 4870, 6029, 4901, 4897, 4898, 4899, 4903, 6029, 4904, 4907, + 4909, 6029, 4911, 4912, 4914, 6029, 4921, 6029, 4915, 4917, + 4924, 4929, 6029, 4925, 4926, 6029, 4931, 4933, 4934, 4938, - 4925, 5940, 4926, 4931, 4932, 4933, 4935, 4936, 4940, 4942, - 4943, 4944, 4945, 4946, 4952, 4964, 4948, 4962, 4968, 4970, - 4972, 4974, 4966, 4976, 4977, 4978, 4979, 4980, 4983, 5940, - 4985, 4986, 4987, 5940, 4991, 4992, 4994, 4996, 5940, 5007, - 5002, 5008, 5009, 5940, 4995, 5015, 5012, 5010, 5020, 5027, - 5023, 5022, 5940, 5940, 5940, 5024, 5033, 5940, 5038, 5025, - 5028, 5030, 5940, 5034, 5040, 5940, 5940, 5041, 5042, 5044, - 5055, 5940, 5045, 5940, 5046, 5940, 5054, 5056, 5062, 5060, - 5940, 5065, 5071, 5940, 5074, 5077, 5079, 5080, 5068, 5081, - 5082, 5940, 5090, 5086, 5092, 5094, 5083, 5085, 5098, 5095, + 6029, 4939, 6029, 4940, 4942, 4943, 4947, 4948, 4950, 4952, + 4953, 4954, 4961, 4959, 4962, 6029, 6029, 4970, 4956, 4967, + 4972, 4974, 4981, 4973, 4978, 4977, 6029, 6029, 4983, 6029, + 4985, 4986, 6029, 4984, 4991, 4990, 4995, 4996, 4997, 4999, + 5002, 5004, 5012, 5005, 5003, 5016, 5026, 5010, 5028, 5030, + 5032, 5034, 5036, 5038, 5006, 5021, 5039, 5040, 5042, 5043, + 6029, 5045, 5047, 5046, 6029, 5052, 5048, 5057, 5053, 6029, + 5060, 5061, 5066, 5067, 6029, 5068, 5072, 5069, 5074, 5077, + 5078, 5079, 5088, 5080, 5081, 6029, 6029, 6029, 5092, 5085, + 6029, 5099, 5091, 5095, 5100, 6029, 5101, 5102, 6029, 6029, - 5102, 5099, 5105, 5940, 5107, 5109, 5110, 5116, 5108, 5118, - 5112, 5940, 5120, 5940, 5121, 5122, 5125, 5128, 5123, 5126, - 5050, 5131, 5130, 5141, 5138, 5940, 5143, 5147, 5940, 5144, - 5940, 5149, 5940, 5150, 5151, 5152, 5153, 5940, 5155, 5159, - 5160, 5161, 5940, 5162, 5164, 5170, 5940, 5940, 5171, 5181, - 5172, 5173, 5185, 5187, 5174, 5189, 5182, 5190, 5176, 5198, - 5197, 5200, 5201, 5203, 5204, 5205, 5940, 5940, 5940, 5210, - 5209, 5217, 5214, 5215, 5225, 5220, 5940, 5223, 5226, 5224, - 5233, 5230, 5235, 5940, 5232, 5236, 5237, 5239, 5241, 5242, - 5246, 5940, 5250, 5257, 5253, 5245, 5260, 5264, 5267, 5269, + 5103, 5104, 5106, 5115, 6029, 5107, 6029, 5108, 6029, 5111, + 5112, 5121, 5123, 6029, 5125, 5133, 6029, 5136, 5139, 5141, + 5142, 5124, 5127, 5143, 6029, 5153, 5145, 5149, 5156, 5152, + 5157, 5158, 5159, 5166, 5161, 5165, 6029, 5167, 5168, 5169, + 5175, 5162, 5172, 5179, 6029, 5183, 6029, 5180, 5184, 5185, + 5191, 5188, 5190, 5194, 5196, 5192, 5206, 5195, 6029, 5208, + 5211, 6029, 5198, 6029, 5213, 6029, 5215, 5216, 5217, 5220, + 6029, 5222, 5203, 5226, 5230, 5227, 5228, 6029, 5236, 5229, + 5239, 6029, 6029, 5234, 5246, 5244, 5241, 5252, 5256, 5242, + 5258, 5248, 5260, 5245, 5267, 5253, 5264, 5266, 5271, 5275, - 5270, 5940, 5272, 5940, 5940, 5273, 5940, 5274, 5276, 5277, - 5278, 5940, 5281, 5283, 5282, 5284, 5286, 5940, 5294, 5287, - 5289, 5290, 5940, 5940, 5301, 5940, 5304, 5305, 5306, 5315, - 5311, 5313, 5317, 5314, 5940, 5312, 5318, 5322, 5324, 5325, - 5940, 5326, 5328, 5329, 5330, 5333, 5337, 5339, 5340, 5341, - 5940, 5343, 5335, 5358, 5354, 5940, 5342, 5360, 5940, 5940, - 5345, 5364, 5365, 5940, 5940, 5940, 5367, 5940, 5371, 5377, - 5381, 5385, 5368, 5940, 5387, 5376, 5384, 5940, 5380, 5388, - 5390, 5392, 5940, 5940, 5389, 5396, 5393, 5401, 5402, 5940, - 5404, 5406, 5411, 5419, 5421, 5409, 5423, 5425, 5432, 5405, + 5273, 6029, 6029, 6029, 5268, 5279, 5287, 5283, 5285, 5290, + 5289, 6029, 5291, 5292, 5293, 5300, 5298, 5302, 6029, 5305, + 5295, 5303, 5306, 5309, 5304, 5311, 6029, 5322, 5325, 5326, + 5318, 5329, 5336, 5338, 5340, 5341, 6029, 5343, 6029, 6029, + 5314, 6029, 5327, 5330, 5344, 5347, 6029, 5351, 5345, 5353, + 5354, 5355, 5356, 5358, 6029, 5367, 5359, 5362, 5364, 6029, + 6029, 5374, 6029, 5377, 5378, 5370, 5386, 5382, 5385, 5388, + 5390, 6029, 5389, 5391, 5392, 5396, 5398, 6029, 5399, 5400, + 5401, 5402, 5405, 5410, 5412, 5403, 5413, 6029, 5415, 5414, + 5431, 5427, 6029, 5416, 5428, 6029, 6029, 5438, 5440, 5442, - 5413, 5427, 5429, 5430, 5436, 5433, 5440, 5449, 5445, 5447, - 5454, 5455, 5940, 5940, 5457, 5940, 5940, 5459, 5462, 5464, - 5466, 5468, 5470, 5472, 5940, 5407, 5474, 5475, 5476, 5477, - 5940, 5479, 5481, 5478, 5482, 5487, 5485, 5489, 5491, 5940, - 5940, 5483, 5500, 5492, 5505, 5494, 5940, 5507, 5502, 5508, - 5509, 5511, 5513, 5516, 5940, 5515, 5517, 5940, 5940, 5519, - 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5520, 5940, - 5524, 5528, 5536, 5539, 5940, 5525, 5533, 5444, 5529, 5540, - 5940, 5541, 5544, 5545, 5551, 5543, 5546, 5552, 5556, 5559, - 5557, 5560, 5561, 5562, 5566, 5563, 5567, 5569, 5940, 5940, + 6029, 6029, 6029, 5444, 6029, 5448, 5452, 5456, 5460, 5451, + 6029, 5459, 5461, 5463, 5417, 5465, 6029, 5466, 5467, 5468, + 5472, 6029, 6029, 5469, 5474, 5476, 5475, 5477, 6029, 5478, + 5482, 5488, 5498, 5500, 5490, 5501, 5495, 5509, 5516, 5493, + 5502, 5511, 5514, 5515, 5512, 5522, 5529, 5524, 5526, 5528, + 5533, 6029, 6029, 5535, 6029, 6029, 5537, 5540, 5542, 5544, + 5546, 5548, 5550, 5552, 5553, 6029, 5554, 5556, 5557, 5433, + 5558, 6029, 5561, 5560, 5562, 5568, 5564, 5569, 5567, 5572, + 6029, 6029, 5565, 5360, 5573, 5574, 5584, 6029, 5585, 5592, + 5587, 5589, 5590, 5593, 5591, 6029, 5597, 5595, 6029, 6029, - 5940, 5568, 5570, 5580, 5572, 5589, 5591, 5594, 5596, 5583, - 5586, 5597, 5598, 5599, 5601, 5605, 5613, 5608, 5609, 5610, - 5611, 5617, 5612, 5614, 5619, 5940, 5623, 5940, 5624, 5940, - 5940, 5629, 5634, 5632, 5625, 5636, 5643, 5639, 5641, 5645, - 5646, 5648, 5650, 5940, 5652, 5655, 5940, 5656, 5657, 5940, - 5658, 5660, 5662, 5659, 5663, 5666, 5669, 5677, 5668, 5940, - 5940, 5671, 5679, 5680, 5684, 5687, 5694, 5689, 5693, 5695, - 5696, 5686, 5708, 5940, 5704, 5706, 5710, 5940, 5712, 5707, - 5713, 5714, 5715, 5723, 5718, 5719, 5940, 5721, 5940, 5725, - 5727, 5730, 5728, 5729, 5731, 5740, 5738, 5742, 5940, 5745, + 5598, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, + 5600, 5612, 6029, 5606, 5617, 5621, 5623, 6029, 5608, 5618, + 5610, 5624, 5625, 6029, 5626, 5629, 5628, 5483, 5630, 5634, + 5637, 5632, 5636, 5641, 5638, 5643, 5646, 5647, 5648, 5653, + 5642, 5656, 6029, 6029, 6029, 5660, 5664, 5666, 5667, 5671, + 5672, 5678, 5680, 5668, 5675, 5682, 5681, 5683, 5689, 5690, + 5697, 5692, 5696, 5693, 5699, 6029, 5701, 5694, 5702, 5704, + 6029, 5707, 6029, 5710, 6029, 6029, 5712, 5715, 5717, 5713, + 5724, 5726, 5723, 5727, 5729, 5730, 5734, 5739, 6029, 5731, + 5736, 6029, 5741, 5742, 6029, 5743, 5744, 5745, 5747, 5753, - 5749, 5746, 5751, 5753, 5756, 5757, 5758, 5760, 5762, 5766, - 5770, 5772, 5773, 5763, 5776, 5774, 5940, 5784, 5775, 5940, - 5785, 5786, 5778, 5787, 5788, 5940, 5796, 5792, 5798, 5799, - 5802, 5803, 5940, 5805, 5808, 5809, 5940, 5813, 5940, 5940, - 5814, 5812, 5815, 5821, 5823, 5940, 5940, 5940, 5848, 5855, - 5862, 5869, 5876, 88, 5883, 5890, 5897, 5904, 5911, 5918, - 5925, 5932 + 5750, 5754, 5757, 5768, 6029, 6029, 5751, 5758, 5761, 5773, + 5765, 5781, 5777, 5774, 5782, 5783, 5784, 5791, 6029, 5790, + 5792, 5794, 6029, 5795, 5786, 5800, 5796, 5798, 5808, 5801, + 5806, 6029, 5809, 6029, 5812, 5804, 5818, 5814, 5821, 5822, + 5824, 5826, 5828, 6029, 5827, 5829, 5832, 5836, 5838, 5842, + 5843, 5844, 5846, 5849, 5855, 5859, 5860, 5861, 5852, 5864, + 5856, 6029, 5866, 5862, 6029, 5872, 5873, 5870, 5874, 5879, + 6029, 5883, 5876, 5884, 5885, 5888, 5890, 6029, 5892, 5899, + 5894, 6029, 5900, 6029, 6029, 5902, 5896, 5904, 5909, 5911, + 6029, 6029, 6029, 5937, 5944, 5951, 5958, 5965, 88, 5972, + + 5979, 5986, 5993, 6000, 6007, 6014, 6021 } ; -static const flex_int16_t yy_def[3063] = +static const flex_int16_t yy_def[3108] = { 0, - 3048, 1, 3049, 3049, 3050, 3050, 3051, 3051, 3052, 3052, - 3053, 3053, 3048, 3054, 3048, 3048, 3048, 3048, 3055, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3056, 3048, 3048, 3048, 3056, 3057, 3048, 3048, - 3048, 3057, 3058, 3048, 3048, 3048, 3048, 3058, 3059, 3048, - 3048, 3048, 3059, 3060, 3048, 3061, 3048, 3060, 3060, 3054, - 3054, 3048, 3062, 3055, 3062, 3055, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3093, 1, 3094, 3094, 3095, 3095, 3096, 3096, 3097, 3097, + 3098, 3098, 3093, 3099, 3093, 3093, 3093, 3093, 3100, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3101, 3093, 3093, 3093, 3101, 3102, 3093, 3093, + 3093, 3102, 3103, 3093, 3093, 3093, 3093, 3103, 3104, 3093, + 3093, 3093, 3104, 3105, 3093, 3106, 3093, 3105, 3105, 3099, + 3099, 3093, 3107, 3100, 3107, 3100, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3056, 3056, 3057, 3057, 3058, 3058, 3048, 3059, 3059, 3060, - 3060, 3061, 3061, 3060, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3101, 3101, 3102, 3102, 3103, 3103, 3093, 3104, 3104, + 3105, 3105, 3106, 3106, 3105, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3060, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3099, 3105, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3060, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3048, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3093, 3093, 3099, 3093, 3093, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3060, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3105, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3048, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3093, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3048, 3048, 3054, 3048, 3054, 3048, 3054, - 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3093, + 3099, 3093, 3099, 3093, 3099, 3099, 3093, 3093, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3048, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, + 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3048, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3048, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3048, 3048, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3048, 3048, 3054, 3054, 3054, - 3054, 3048, 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3093, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3093, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3093, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3093, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3093, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3048, 3048, 3054, 3048, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3048, - 3054, 3054, 3054, 3048, 3048, 3048, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3093, + 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, + 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3093, 3093, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3048, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3048, 3054, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3054, 3048, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, + 3093, 3093, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3093, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, + 3099, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3093, 3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3048, 3048, - 3054, 3054, 3054, 3054, 3054, 3048, 3048, 0, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048 + 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3093, 0, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + + 3093, 3093, 3093, 3093, 3093, 3093, 3093 } ; -static const flex_int16_t yy_nxt[5981] = +static const flex_int16_t yy_nxt[6070] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1437,655 +1453,665 @@ static const flex_int16_t yy_nxt[5981] = 61, 62, 72, 71, 63, 102, 73, 92, 70, 71, 63, 15, 16, 17, 65, 66, 67, 75, 71, 75, - 75, 71, 75, 68, 104, 157, 103, 93, 75, 76, - 141, 141, 69, 15, 16, 17, 65, 66, 67, 71, + 75, 71, 75, 68, 104, 158, 103, 93, 75, 76, + 142, 142, 69, 15, 16, 17, 65, 66, 67, 71, 71, 83, 77, 78, 71, 68, 79, 71, 84, 87, - 71, 80, 85, 88, 69, 86, 89, 151, 90, 91, - 81, 71, 94, 71, 96, 71, 71, 159, 71, 105, + 71, 80, 85, 88, 69, 86, 89, 152, 90, 91, + 81, 71, 94, 71, 96, 164, 71, 71, 71, 105, 98, 112, 97, 99, 71, 109, 95, 106, 71, 110, - 100, 71, 101, 107, 172, 71, 113, 108, 143, 71, - 114, 143, 118, 71, 119, 111, 115, 71, 120, 116, - 140, 151, 124, 148, 148, 125, 117, 163, 121, 122, - 71, 123, 126, 71, 133, 154, 127, 128, 71, 129, + 100, 119, 101, 107, 71, 120, 226, 108, 144, 121, + 152, 144, 71, 141, 71, 111, 71, 113, 71, 122, + 123, 114, 124, 125, 155, 115, 126, 71, 130, 71, + 131, 116, 71, 127, 117, 71, 134, 128, 129, 132, - 224, 130, 71, 137, 134, 158, 71, 138, 135, 136, - 131, 139, 145, 71, 145, 145, 132, 145, 75, 71, - 75, 75, 150, 75, 150, 150, 70, 150, 70, 70, - 153, 70, 72, 165, 71, 171, 73, 70, 75, 71, - 75, 75, 155, 75, 71, 71, 225, 71, 156, 75, - 76, 71, 71, 71, 160, 161, 164, 71, 71, 166, - 173, 71, 71, 169, 170, 167, 71, 168, 162, 71, - 71, 175, 177, 178, 71, 71, 184, 71, 176, 174, - 179, 182, 253, 71, 71, 71, 189, 180, 181, 183, - 71, 151, 71, 185, 191, 71, 186, 71, 71, 199, + 220, 118, 152, 71, 138, 133, 135, 159, 139, 160, + 136, 137, 140, 146, 71, 146, 146, 156, 146, 149, + 149, 75, 71, 75, 75, 151, 75, 151, 151, 70, + 151, 70, 70, 154, 70, 72, 166, 71, 71, 73, + 70, 75, 157, 75, 75, 71, 75, 71, 161, 71, + 162, 71, 75, 76, 71, 170, 171, 71, 165, 174, + 167, 71, 71, 163, 71, 71, 168, 71, 169, 71, + 71, 71, 71, 172, 183, 176, 173, 184, 175, 71, + 178, 179, 177, 192, 71, 181, 190, 186, 180, 182, + 187, 71, 71, 185, 71, 71, 193, 195, 71, 150, - 192, 194, 197, 71, 71, 195, 71, 198, 200, 187, - 188, 190, 71, 201, 71, 71, 202, 205, 71, 203, - 193, 196, 207, 71, 71, 71, 71, 204, 71, 212, - 209, 71, 71, 206, 210, 71, 214, 71, 71, 71, - 71, 208, 71, 220, 211, 215, 213, 71, 226, 229, - 217, 216, 223, 71, 221, 71, 219, 218, 222, 233, - 230, 71, 71, 71, 235, 227, 71, 71, 228, 231, - 71, 239, 71, 236, 232, 238, 71, 234, 149, 240, - 71, 242, 141, 141, 143, 237, 243, 143, 241, 145, - 151, 145, 145, 244, 145, 148, 148, 150, 248, 150, + 71, 196, 71, 188, 189, 71, 201, 202, 71, 71, + 71, 191, 200, 71, 198, 204, 194, 197, 203, 199, + 71, 71, 205, 71, 207, 209, 71, 71, 71, 214, + 206, 208, 211, 71, 71, 71, 212, 71, 71, 216, + 71, 210, 71, 228, 71, 71, 213, 222, 217, 219, + 71, 225, 227, 215, 218, 71, 221, 231, 223, 71, + 229, 233, 224, 230, 71, 71, 237, 71, 232, 71, + 71, 71, 71, 71, 234, 238, 241, 71, 244, 240, + 235, 236, 242, 245, 142, 142, 144, 239, 254, 144, + 243, 146, 152, 146, 146, 246, 146, 149, 149, 151, - 150, 75, 150, 75, 75, 71, 75, 71, 246, 71, - 245, 71, 71, 153, 71, 71, 71, 250, 71, 71, - 71, 256, 249, 247, 251, 259, 252, 255, 258, 71, - 254, 71, 260, 264, 262, 71, 263, 71, 257, 71, - 71, 265, 71, 71, 268, 261, 266, 71, 273, 269, - 71, 147, 71, 71, 270, 275, 274, 276, 279, 71, - 271, 272, 278, 267, 71, 277, 71, 71, 71, 71, - 281, 71, 282, 283, 71, 71, 71, 71, 71, 288, - 289, 285, 295, 284, 286, 71, 299, 280, 71, 287, - 71, 290, 297, 298, 291, 300, 292, 302, 296, 71, + 71, 151, 151, 75, 151, 75, 75, 71, 75, 71, + 248, 71, 247, 71, 71, 154, 71, 71, 250, 252, + 71, 255, 71, 261, 251, 249, 253, 258, 71, 71, + 262, 71, 257, 256, 71, 71, 265, 260, 266, 264, + 259, 267, 71, 71, 71, 71, 268, 71, 275, 270, + 71, 71, 71, 148, 271, 277, 263, 278, 71, 272, + 71, 276, 281, 269, 283, 273, 274, 71, 71, 71, + 279, 280, 284, 71, 71, 71, 71, 71, 71, 71, + 71, 290, 291, 285, 297, 71, 287, 71, 286, 288, + 71, 282, 348, 289, 71, 292, 299, 300, 293, 71, - 71, 71, 71, 71, 71, 304, 305, 301, 293, 307, - 294, 71, 71, 308, 71, 313, 146, 71, 310, 71, - 303, 306, 309, 311, 71, 71, 317, 71, 71, 71, - 71, 71, 312, 314, 315, 71, 316, 71, 71, 318, - 320, 319, 71, 71, 325, 71, 321, 71, 71, 326, - 71, 71, 327, 322, 331, 329, 71, 71, 323, 334, - 71, 71, 71, 324, 71, 71, 328, 330, 71, 336, - 337, 71, 71, 340, 332, 333, 341, 335, 339, 71, - 338, 342, 71, 343, 344, 71, 71, 346, 348, 71, - 347, 71, 350, 71, 71, 71, 71, 351, 71, 345, + 294, 71, 301, 71, 302, 298, 326, 304, 309, 306, + 71, 307, 295, 71, 296, 71, 303, 71, 310, 305, + 71, 312, 313, 71, 71, 311, 308, 71, 71, 315, + 314, 71, 71, 71, 71, 71, 71, 71, 317, 71, + 319, 71, 71, 71, 316, 321, 323, 71, 71, 328, + 71, 324, 322, 318, 329, 71, 71, 71, 320, 334, + 71, 330, 325, 327, 332, 71, 331, 337, 71, 71, + 71, 71, 333, 71, 339, 335, 336, 71, 342, 340, + 343, 344, 71, 71, 346, 71, 71, 71, 338, 341, + 71, 71, 349, 350, 71, 347, 351, 353, 71, 71, - 71, 354, 71, 151, 71, 71, 71, 361, 144, 71, - 357, 359, 349, 71, 352, 355, 353, 362, 71, 356, - 71, 71, 71, 71, 358, 363, 364, 365, 360, 71, - 71, 71, 367, 71, 371, 372, 71, 366, 374, 370, - 71, 71, 71, 373, 369, 71, 375, 368, 376, 71, - 378, 71, 71, 379, 71, 71, 71, 71, 382, 71, - 377, 383, 71, 385, 71, 71, 387, 388, 384, 71, - 380, 381, 71, 389, 71, 71, 386, 71, 390, 71, - 71, 392, 393, 394, 395, 71, 71, 71, 399, 71, - 71, 71, 71, 396, 400, 391, 402, 71, 71, 398, + 354, 345, 71, 71, 357, 71, 152, 71, 356, 71, + 71, 71, 147, 364, 71, 360, 362, 355, 358, 71, + 352, 365, 71, 71, 359, 71, 368, 71, 366, 361, + 367, 71, 71, 363, 71, 71, 71, 369, 71, 374, + 375, 376, 71, 378, 373, 370, 71, 71, 71, 372, + 377, 379, 371, 71, 71, 71, 381, 71, 382, 71, + 71, 71, 71, 385, 71, 380, 386, 388, 71, 383, + 387, 390, 393, 71, 384, 71, 392, 71, 389, 71, + 396, 391, 71, 71, 395, 397, 71, 71, 71, 394, + 71, 71, 71, 402, 71, 71, 71, 403, 71, 145, - 71, 71, 405, 71, 71, 410, 397, 407, 401, 71, - 409, 71, 411, 71, 71, 71, 403, 71, 404, 438, - 71, 406, 421, 419, 408, 412, 71, 71, 71, 71, - 422, 425, 423, 420, 430, 413, 142, 71, 414, 431, - 71, 71, 426, 415, 416, 417, 418, 71, 424, 427, - 71, 71, 428, 429, 432, 71, 71, 71, 433, 71, - 440, 434, 435, 71, 436, 437, 71, 71, 439, 71, - 71, 442, 441, 71, 71, 447, 71, 465, 453, 443, - 71, 71, 71, 448, 71, 449, 71, 71, 444, 446, - 445, 452, 454, 451, 450, 71, 71, 71, 71, 457, + 405, 71, 71, 401, 71, 399, 398, 71, 408, 400, + 71, 71, 413, 404, 410, 71, 412, 406, 71, 407, + 409, 71, 415, 71, 414, 71, 71, 71, 424, 428, + 71, 411, 71, 423, 422, 71, 443, 71, 425, 430, + 426, 416, 143, 429, 417, 71, 71, 431, 432, 418, + 419, 420, 421, 433, 71, 71, 427, 435, 434, 71, + 71, 71, 71, 436, 71, 71, 437, 71, 71, 445, + 438, 441, 444, 442, 71, 71, 446, 439, 440, 447, + 71, 71, 452, 71, 449, 71, 71, 448, 71, 71, + 453, 457, 454, 458, 469, 71, 451, 71, 71, 71, - 455, 458, 71, 466, 71, 460, 456, 464, 71, 71, - 71, 459, 467, 71, 71, 468, 71, 71, 461, 469, - 71, 462, 483, 463, 479, 470, 71, 71, 71, 471, - 71, 484, 481, 732, 486, 480, 71, 472, 71, 473, - 71, 474, 482, 71, 71, 494, 496, 485, 151, 495, - 498, 497, 71, 71, 475, 500, 71, 476, 501, 477, - 504, 478, 71, 71, 487, 488, 71, 71, 71, 499, - 71, 71, 502, 71, 489, 503, 490, 491, 492, 505, - 508, 493, 507, 71, 71, 71, 71, 506, 513, 514, - 509, 511, 516, 510, 71, 517, 71, 71, 71, 71, + 450, 455, 459, 456, 71, 71, 71, 470, 462, 460, + 463, 71, 464, 471, 465, 461, 472, 71, 71, 71, + 71, 71, 71, 473, 71, 474, 71, 466, 152, 152, + 467, 475, 468, 71, 71, 476, 489, 71, 71, 486, + 484, 487, 485, 477, 71, 478, 71, 479, 488, 504, + 71, 491, 490, 499, 71, 500, 501, 71, 71, 71, + 480, 502, 71, 481, 503, 482, 71, 483, 71, 505, + 492, 493, 506, 508, 71, 507, 71, 71, 71, 509, + 494, 586, 495, 496, 497, 71, 71, 498, 513, 71, + 71, 512, 71, 71, 71, 71, 511, 519, 514, 71, - 515, 521, 71, 512, 71, 71, 71, 71, 71, 519, - 524, 525, 526, 520, 71, 71, 518, 71, 71, 531, - 523, 71, 71, 536, 528, 533, 527, 522, 71, 71, - 71, 529, 530, 534, 71, 71, 71, 532, 71, 71, - 71, 546, 71, 547, 71, 538, 71, 537, 535, 542, - 539, 545, 541, 540, 71, 548, 71, 549, 71, 553, - 543, 151, 544, 71, 551, 550, 71, 71, 71, 556, - 552, 71, 554, 71, 555, 558, 71, 71, 559, 71, - 561, 562, 71, 71, 557, 71, 563, 71, 71, 71, - 560, 71, 568, 566, 567, 71, 71, 71, 564, 71, + 510, 515, 71, 522, 521, 518, 516, 71, 520, 517, + 71, 524, 526, 71, 71, 523, 71, 71, 71, 71, + 71, 525, 529, 530, 531, 71, 71, 71, 71, 536, + 528, 71, 538, 71, 535, 533, 532, 539, 527, 71, + 541, 534, 71, 71, 71, 71, 71, 537, 71, 71, + 542, 71, 540, 551, 547, 552, 71, 543, 550, 544, + 546, 71, 545, 554, 71, 548, 71, 549, 557, 71, + 553, 71, 556, 71, 558, 71, 71, 555, 559, 71, + 561, 563, 71, 71, 71, 71, 566, 567, 564, 562, + 71, 71, 71, 71, 568, 560, 71, 565, 71, 71, - 569, 71, 71, 71, 574, 71, 565, 570, 578, 575, - 71, 573, 71, 577, 576, 572, 571, 71, 580, 71, - 71, 582, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 579, 584, 592, 585, 587, 594, 71, 593, 71, - 71, 581, 71, 583, 591, 588, 586, 589, 590, 71, - 71, 596, 71, 71, 595, 599, 71, 602, 597, 71, - 603, 598, 604, 71, 605, 71, 71, 600, 71, 71, - 71, 601, 71, 608, 71, 71, 611, 71, 71, 607, - 612, 71, 614, 71, 71, 71, 644, 610, 606, 613, - 71, 609, 71, 71, 615, 71, 617, 628, 71, 631, + 573, 571, 71, 572, 71, 71, 569, 71, 574, 71, + 71, 71, 579, 570, 575, 580, 71, 582, 71, 578, + 71, 71, 581, 577, 576, 583, 71, 585, 71, 587, + 71, 71, 71, 71, 71, 71, 71, 71, 589, 584, + 590, 592, 588, 71, 599, 594, 601, 71, 71, 598, + 71, 71, 71, 591, 593, 595, 600, 596, 71, 71, + 71, 71, 603, 597, 602, 71, 604, 609, 606, 605, + 71, 610, 71, 71, 607, 611, 608, 612, 71, 71, + 71, 71, 71, 71, 614, 615, 618, 71, 71, 71, + 71, 71, 619, 621, 620, 71, 71, 71, 71, 71, - 616, 71, 618, 71, 626, 627, 71, 619, 632, 620, - 71, 629, 633, 71, 630, 621, 71, 622, 635, 71, - 623, 624, 636, 638, 71, 634, 71, 625, 637, 71, - 71, 71, 640, 641, 639, 71, 646, 71, 71, 71, - 71, 71, 71, 71, 149, 71, 643, 642, 652, 71, - 648, 653, 647, 71, 649, 656, 645, 71, 151, 650, - 71, 659, 658, 651, 654, 71, 657, 71, 655, 71, - 71, 71, 660, 71, 71, 71, 71, 668, 666, 71, - 661, 670, 71, 71, 663, 71, 664, 669, 662, 667, - 671, 665, 673, 71, 71, 672, 71, 674, 71, 71, + 616, 613, 617, 635, 624, 622, 71, 150, 71, 623, + 71, 625, 634, 642, 672, 633, 626, 636, 627, 71, + 71, 645, 637, 638, 628, 71, 629, 71, 71, 630, + 631, 71, 646, 639, 71, 641, 632, 640, 71, 71, + 644, 643, 648, 71, 71, 651, 71, 71, 653, 71, + 647, 71, 71, 71, 71, 71, 71, 71, 71, 148, + 659, 649, 71, 650, 654, 655, 656, 660, 663, 71, + 71, 652, 662, 657, 658, 661, 152, 666, 664, 71, + 665, 71, 667, 71, 71, 71, 71, 71, 147, 673, + 71, 71, 71, 675, 668, 676, 677, 71, 670, 678, - 71, 71, 675, 71, 679, 678, 71, 676, 71, 677, - 684, 695, 680, 71, 71, 685, 71, 687, 71, 681, - 688, 71, 682, 689, 683, 71, 686, 690, 71, 71, - 691, 71, 692, 71, 71, 693, 694, 71, 71, 71, - 698, 71, 697, 71, 696, 71, 699, 702, 703, 71, - 71, 71, 71, 704, 71, 708, 706, 71, 71, 71, - 147, 71, 700, 709, 701, 71, 71, 71, 705, 711, - 71, 710, 707, 71, 712, 71, 715, 714, 713, 71, - 71, 720, 71, 716, 718, 719, 717, 722, 721, 71, - 71, 723, 724, 71, 725, 71, 71, 71, 71, 728, + 669, 671, 680, 674, 679, 71, 71, 71, 71, 71, + 682, 71, 71, 71, 71, 71, 686, 685, 681, 71, + 694, 71, 691, 683, 687, 71, 684, 692, 71, 71, + 690, 688, 693, 696, 689, 695, 71, 697, 71, 71, + 698, 71, 699, 71, 71, 71, 700, 701, 71, 71, + 702, 71, 707, 71, 705, 71, 71, 704, 706, 710, + 709, 71, 703, 71, 71, 71, 71, 711, 71, 713, + 715, 71, 71, 716, 708, 718, 71, 71, 71, 712, + 719, 71, 722, 71, 720, 717, 714, 71, 71, 71, + 71, 729, 725, 726, 145, 721, 723, 71, 71, 724, - 727, 71, 729, 71, 71, 71, 736, 71, 734, 71, - 71, 71, 71, 71, 730, 146, 726, 733, 737, 731, - 71, 740, 742, 71, 71, 735, 744, 739, 71, 738, - 743, 749, 741, 745, 746, 71, 71, 71, 747, 71, - 751, 753, 748, 71, 71, 71, 71, 71, 752, 71, - 755, 756, 754, 750, 71, 71, 757, 71, 71, 762, - 71, 71, 71, 760, 761, 71, 765, 758, 759, 764, - 71, 767, 71, 71, 771, 71, 769, 763, 71, 768, - 71, 71, 766, 773, 774, 71, 776, 772, 71, 775, - 71, 770, 71, 71, 778, 780, 71, 71, 71, 71, + 71, 71, 71, 727, 731, 728, 732, 730, 71, 71, + 71, 71, 735, 734, 71, 736, 737, 71, 71, 71, + 71, 739, 71, 741, 743, 71, 71, 749, 733, 738, + 740, 744, 71, 71, 71, 71, 746, 71, 751, 742, + 71, 747, 71, 750, 143, 745, 748, 752, 753, 71, + 71, 71, 754, 71, 71, 71, 755, 760, 756, 758, + 761, 759, 762, 71, 71, 71, 71, 757, 71, 763, + 764, 765, 71, 71, 771, 71, 766, 71, 71, 71, + 71, 71, 776, 769, 770, 767, 768, 773, 71, 71, + 71, 780, 71, 774, 772, 778, 777, 71, 71, 775, - 71, 71, 786, 71, 71, 787, 777, 779, 71, 71, - 71, 71, 788, 71, 781, 782, 783, 71, 784, 789, - 785, 795, 71, 71, 790, 793, 71, 71, 791, 71, - 792, 71, 794, 71, 71, 797, 796, 800, 71, 71, - 71, 71, 71, 808, 71, 798, 71, 71, 799, 801, - 802, 809, 71, 71, 71, 807, 803, 804, 805, 806, - 812, 71, 71, 810, 811, 71, 813, 71, 814, 71, - 71, 71, 817, 815, 818, 816, 820, 819, 71, 71, - 71, 71, 71, 821, 71, 822, 823, 151, 71, 824, - 71, 826, 828, 829, 71, 825, 827, 71, 830, 71, + 783, 71, 781, 782, 71, 784, 71, 71, 785, 71, + 779, 787, 71, 71, 789, 71, 71, 71, 71, 795, + 71, 71, 71, 788, 796, 71, 786, 71, 71, 71, + 797, 790, 71, 791, 792, 71, 793, 798, 794, 804, + 71, 71, 799, 71, 802, 71, 800, 71, 801, 71, + 803, 71, 71, 806, 805, 809, 71, 71, 71, 71, + 71, 817, 807, 71, 71, 71, 808, 810, 811, 818, + 71, 71, 71, 816, 812, 813, 814, 815, 821, 71, + 71, 820, 819, 71, 822, 71, 71, 823, 71, 71, + 826, 824, 828, 825, 827, 71, 71, 833, 71, 71, - 71, 71, 831, 836, 71, 71, 832, 71, 837, 839, - 71, 71, 842, 71, 833, 834, 838, 71, 71, 71, - 840, 835, 71, 844, 841, 71, 848, 71, 71, 845, - 71, 71, 71, 843, 71, 849, 71, 850, 71, 71, - 144, 71, 71, 847, 71, 865, 851, 846, 862, 71, - 863, 860, 71, 866, 853, 861, 852, 71, 864, 71, - 867, 71, 854, 71, 71, 872, 855, 869, 71, 856, - 71, 71, 868, 880, 71, 71, 857, 858, 870, 859, - 71, 885, 71, 871, 71, 873, 874, 71, 875, 71, - 884, 876, 71, 882, 949, 881, 877, 71, 887, 886, + 829, 830, 71, 71, 831, 832, 71, 152, 71, 838, + 71, 835, 837, 834, 839, 836, 71, 71, 71, 71, + 845, 71, 840, 848, 71, 841, 71, 846, 71, 71, + 851, 71, 842, 843, 71, 847, 71, 849, 853, 844, + 71, 71, 71, 857, 71, 71, 71, 71, 850, 71, + 71, 852, 854, 858, 859, 71, 71, 71, 71, 71, + 856, 889, 860, 71, 871, 872, 855, 71, 875, 71, + 862, 861, 71, 869, 870, 71, 71, 863, 71, 873, + 874, 864, 71, 876, 865, 71, 877, 878, 71, 881, + 71, 866, 867, 71, 868, 71, 71, 71, 880, 879, - 71, 889, 878, 879, 888, 883, 71, 71, 71, 71, - 891, 890, 71, 892, 893, 71, 71, 71, 894, 71, - 71, 895, 71, 897, 71, 901, 71, 71, 71, 71, - 900, 896, 71, 904, 71, 71, 71, 898, 908, 899, - 909, 902, 903, 926, 71, 905, 906, 910, 71, 911, - 914, 907, 71, 915, 912, 71, 71, 913, 71, 71, - 917, 71, 71, 916, 918, 71, 71, 71, 919, 921, - 71, 922, 71, 920, 71, 923, 71, 71, 928, 71, - 71, 925, 71, 71, 71, 931, 71, 71, 71, 929, - 930, 71, 924, 933, 71, 934, 927, 936, 71, 935, + 71, 882, 883, 71, 884, 904, 893, 885, 891, 890, + 894, 71, 886, 71, 71, 896, 71, 71, 887, 888, + 895, 892, 71, 898, 71, 71, 71, 71, 900, 899, + 906, 897, 901, 902, 71, 71, 905, 903, 71, 71, + 71, 71, 910, 71, 71, 71, 71, 909, 71, 913, + 917, 71, 919, 71, 930, 71, 71, 912, 907, 908, + 911, 71, 914, 915, 920, 923, 918, 71, 916, 921, + 71, 71, 922, 924, 71, 71, 926, 927, 71, 71, + 925, 71, 71, 71, 928, 931, 71, 71, 71, 929, + 71, 932, 71, 934, 71, 71, 71, 935, 939, 71, - 71, 937, 932, 71, 71, 938, 71, 71, 945, 943, - 71, 71, 940, 941, 944, 71, 71, 939, 71, 942, - 71, 71, 71, 950, 952, 946, 955, 948, 953, 71, - 947, 951, 71, 71, 71, 71, 71, 954, 71, 71, - 71, 71, 961, 966, 963, 71, 71, 71, 142, 71, - 71, 71, 71, 956, 957, 958, 967, 971, 959, 960, - 965, 962, 968, 964, 71, 969, 970, 71, 974, 71, - 71, 71, 973, 71, 71, 71, 71, 71, 972, 71, - 976, 983, 978, 71, 71, 985, 987, 71, 988, 71, - 975, 71, 71, 977, 71, 979, 981, 984, 980, 982, + 71, 942, 71, 71, 941, 933, 71, 71, 71, 940, + 936, 937, 944, 938, 71, 945, 71, 947, 71, 946, + 71, 943, 71, 948, 71, 71, 954, 949, 71, 956, + 950, 955, 71, 952, 71, 71, 71, 71, 953, 71, + 964, 71, 961, 951, 71, 959, 963, 71, 71, 957, + 962, 71, 71, 966, 958, 71, 71, 71, 71, 71, + 71, 960, 71, 977, 974, 71, 71, 972, 965, 71, + 71, 71, 967, 71, 970, 968, 969, 971, 979, 978, + 975, 71, 973, 71, 976, 71, 71, 981, 71, 982, + 980, 984, 985, 71, 71, 983, 71, 987, 71, 71, - 71, 71, 71, 71, 986, 989, 71, 993, 990, 71, - 995, 996, 991, 71, 71, 1000, 997, 71, 71, 999, - 992, 71, 1002, 71, 994, 71, 71, 1005, 151, 71, - 71, 1004, 998, 71, 1007, 71, 1008, 71, 1001, 71, - 71, 71, 71, 1003, 1006, 1011, 71, 71, 71, 1023, - 71, 71, 71, 71, 1024, 1009, 1014, 1010, 1012, 1026, - 71, 1068, 71, 1049, 71, 1013, 1015, 1025, 1016, 71, - 71, 71, 1017, 71, 1018, 1028, 1027, 1029, 1019, 71, - 1020, 71, 71, 1033, 1030, 1021, 1031, 1032, 1034, 71, - 1022, 71, 71, 1035, 71, 1036, 71, 1038, 71, 1039, + 71, 994, 71, 71, 989, 986, 996, 71, 71, 998, + 999, 71, 71, 71, 988, 71, 71, 995, 990, 992, + 71, 991, 993, 71, 1000, 1002, 71, 71, 997, 71, + 1001, 1004, 1007, 1003, 71, 1006, 71, 1011, 71, 1008, + 71, 71, 1010, 71, 1005, 1009, 1013, 71, 71, 1016, + 152, 71, 71, 1015, 71, 1019, 1018, 71, 71, 1014, + 1012, 71, 71, 71, 71, 71, 1017, 1022, 71, 71, + 1034, 71, 1037, 71, 71, 1035, 71, 71, 1021, 1020, + 1023, 1039, 1025, 71, 1026, 71, 1027, 1024, 71, 1036, + 1042, 1028, 71, 1029, 71, 1060, 71, 1030, 1040, 1031, - 71, 1042, 71, 71, 1041, 71, 71, 1037, 1047, 1040, - 1050, 1046, 1043, 1048, 71, 71, 1045, 1051, 71, 71, - 71, 1044, 71, 71, 1054, 1052, 71, 1063, 71, 71, - 71, 1066, 1062, 1067, 71, 71, 71, 1053, 71, 1055, - 1064, 1065, 1072, 71, 1056, 71, 1057, 1074, 1069, 1073, - 71, 71, 1058, 71, 1070, 1071, 71, 1059, 1060, 1075, - 71, 1078, 71, 71, 1061, 71, 71, 71, 1079, 1076, - 1080, 1081, 1084, 1077, 1082, 71, 71, 71, 71, 71, - 71, 71, 1083, 71, 1085, 1087, 71, 71, 71, 71, - 71, 71, 1092, 1089, 1094, 1086, 1093, 1088, 1091, 1096, + 71, 1038, 71, 71, 1032, 1044, 1041, 1047, 1043, 1033, + 1045, 71, 71, 71, 1046, 71, 71, 1049, 1050, 1048, + 1053, 71, 71, 71, 1052, 1058, 1059, 71, 1051, 1057, + 1054, 71, 71, 1061, 1062, 71, 1056, 71, 71, 71, + 71, 71, 1055, 71, 71, 3093, 1074, 71, 1078, 1063, + 71, 1073, 71, 1077, 1064, 1065, 71, 1066, 1075, 1076, + 71, 71, 1067, 71, 1068, 1083, 71, 71, 1079, 1081, + 1069, 1084, 1085, 71, 71, 1070, 1071, 1080, 71, 1089, + 1082, 71, 1072, 71, 1086, 71, 71, 1088, 1090, 71, + 71, 71, 1087, 71, 1095, 71, 71, 71, 1092, 1093, - 71, 1090, 71, 71, 1098, 71, 1095, 1097, 71, 71, - 71, 71, 71, 71, 71, 1104, 1105, 1101, 1106, 1109, - 1099, 1100, 71, 1107, 1103, 71, 1102, 71, 1108, 71, - 71, 1112, 71, 1116, 71, 1110, 1113, 71, 71, 1114, - 71, 1122, 1115, 71, 71, 1111, 1117, 71, 71, 1124, - 71, 71, 71, 71, 1118, 71, 1120, 1126, 1119, 1121, - 71, 71, 71, 1128, 71, 1125, 1130, 1127, 1123, 1131, - 71, 71, 1129, 71, 71, 1133, 1134, 71, 1132, 71, - 1136, 71, 1139, 1140, 71, 1135, 71, 1138, 71, 71, - 71, 1144, 1143, 1137, 71, 1141, 71, 1142, 71, 71, + 71, 1098, 1096, 71, 71, 1091, 71, 1094, 71, 71, + 71, 71, 71, 71, 1097, 1103, 71, 1099, 1100, 1104, + 1102, 1107, 1105, 1101, 71, 1109, 1106, 71, 1108, 71, + 71, 71, 71, 1110, 71, 71, 71, 1115, 71, 1116, + 1117, 71, 1119, 1111, 1112, 1118, 1114, 1113, 1120, 71, + 71, 71, 71, 1122, 71, 1125, 71, 71, 1121, 1129, + 1126, 71, 71, 1123, 71, 1127, 1130, 1124, 1128, 71, + 71, 71, 1135, 1137, 71, 71, 71, 1131, 71, 71, + 1132, 1139, 1133, 71, 71, 1134, 71, 1141, 71, 1138, + 71, 1136, 71, 1143, 71, 1144, 1142, 1140, 71, 1146, - 71, 1150, 1148, 1151, 71, 71, 71, 71, 71, 71, - 1152, 1153, 1145, 1149, 71, 1146, 1155, 1158, 1147, 1154, - 71, 71, 71, 71, 1157, 1159, 1156, 1160, 71, 71, - 1161, 71, 71, 71, 71, 1164, 1165, 71, 1162, 71, - 71, 1170, 1171, 71, 71, 1166, 71, 71, 71, 1163, - 71, 1168, 71, 1174, 71, 1167, 71, 1173, 1172, 1169, - 1176, 1178, 1177, 1175, 71, 71, 71, 71, 71, 1184, - 71, 71, 71, 1180, 1179, 71, 71, 1190, 71, 71, - 71, 1188, 71, 1187, 1195, 1181, 1185, 1183, 1189, 1192, - 1186, 1193, 1182, 71, 71, 71, 71, 71, 1194, 1196, + 71, 71, 1145, 1147, 1148, 71, 1149, 1152, 1153, 71, + 71, 1151, 71, 71, 71, 71, 71, 1150, 1156, 1154, + 71, 1157, 71, 71, 71, 1163, 1161, 1164, 71, 71, + 1155, 71, 1158, 71, 1165, 1159, 71, 1162, 71, 1168, + 71, 1166, 1160, 1167, 1171, 71, 1169, 71, 1173, 71, + 71, 71, 1172, 71, 71, 71, 71, 71, 1177, 1178, + 1170, 71, 1174, 1175, 71, 71, 1183, 1184, 1179, 1176, + 71, 71, 71, 71, 71, 71, 1181, 1187, 71, 1180, + 1186, 71, 1191, 71, 1182, 1185, 71, 71, 1189, 71, + 1188, 71, 71, 1190, 1197, 71, 1193, 71, 71, 71, - 1191, 71, 71, 71, 71, 71, 71, 1199, 71, 71, - 1197, 71, 1202, 1205, 71, 1198, 71, 71, 1200, 71, - 71, 1203, 1220, 1201, 1208, 1206, 1209, 1204, 71, 71, - 1215, 71, 71, 1211, 1207, 71, 1216, 1210, 1217, 71, - 71, 71, 1212, 71, 1213, 71, 1219, 1214, 1218, 71, - 1224, 71, 1223, 71, 1221, 71, 1226, 71, 1222, 1229, - 71, 71, 1230, 71, 1227, 71, 1231, 71, 1225, 71, - 1233, 1234, 71, 71, 1228, 71, 71, 71, 1235, 71, - 71, 71, 71, 1232, 71, 71, 1241, 1236, 1237, 1239, - 71, 1240, 1242, 71, 1238, 71, 1246, 71, 1251, 71, + 71, 1192, 1203, 71, 71, 1201, 71, 71, 1194, 1200, + 1233, 1196, 1198, 1202, 1199, 1205, 1195, 1206, 71, 71, + 1208, 71, 71, 71, 1207, 71, 1204, 1209, 71, 71, + 71, 71, 71, 71, 1212, 71, 1218, 71, 71, 1210, + 1215, 71, 1211, 71, 71, 1213, 71, 1216, 71, 71, + 1214, 1224, 1219, 1229, 1217, 1222, 71, 1228, 1221, 1220, + 1225, 71, 1226, 71, 1223, 1227, 1230, 71, 1231, 71, + 71, 71, 71, 71, 71, 71, 71, 1232, 1237, 1236, + 1239, 1242, 71, 71, 3093, 1240, 71, 71, 1234, 1235, + 1247, 1238, 1243, 71, 71, 1241, 71, 71, 1244, 1246, - 1243, 71, 1245, 1244, 71, 1248, 1250, 71, 1247, 1253, - 71, 71, 1257, 1252, 71, 1249, 1255, 1258, 71, 71, - 71, 71, 1256, 71, 1262, 71, 3048, 1254, 71, 1272, - 1270, 1271, 1261, 1259, 1260, 71, 71, 71, 1269, 1275, - 1263, 1273, 71, 1264, 1265, 71, 71, 71, 1266, 71, - 71, 1274, 1276, 71, 1267, 1277, 71, 1278, 1268, 71, - 1280, 71, 71, 71, 1281, 71, 1282, 1279, 71, 1283, - 1287, 1284, 1285, 71, 1290, 1291, 71, 71, 71, 1329, - 71, 71, 1286, 1292, 71, 1294, 1289, 1288, 1293, 71, - 1295, 71, 1296, 71, 1297, 1303, 1298, 71, 1299, 1300, + 71, 71, 71, 1245, 71, 1248, 71, 71, 71, 71, + 71, 71, 1249, 1254, 1252, 1250, 71, 1259, 71, 1253, + 1251, 1255, 71, 71, 1264, 71, 1256, 71, 1258, 1257, + 71, 1260, 1263, 71, 71, 1266, 71, 71, 1261, 1265, + 71, 1268, 1262, 1270, 71, 71, 1269, 71, 1271, 71, + 71, 1275, 71, 1267, 1273, 71, 1272, 1274, 71, 1284, + 1282, 1283, 1992, 1276, 1287, 71, 1277, 1278, 71, 1285, + 71, 1279, 1288, 71, 71, 1286, 71, 1280, 71, 1289, + 71, 1281, 71, 1291, 71, 1290, 71, 1293, 71, 71, + 71, 1294, 71, 1295, 1292, 71, 1296, 1300, 1298, 71, - 1301, 71, 71, 71, 1302, 1307, 71, 1305, 71, 71, - 1308, 71, 1306, 1310, 71, 71, 1304, 71, 71, 1316, - 71, 1317, 71, 1311, 1312, 71, 71, 71, 1309, 71, - 1318, 71, 1315, 1313, 1320, 71, 1314, 71, 71, 71, - 1319, 1321, 71, 1325, 1322, 1326, 71, 1328, 71, 1323, - 71, 71, 71, 1330, 1327, 71, 1331, 1334, 71, 1336, - 71, 1332, 1324, 71, 1333, 71, 1337, 71, 1338, 71, - 1341, 71, 1335, 71, 71, 71, 71, 1343, 71, 71, - 71, 1345, 1347, 71, 71, 3048, 1349, 1346, 1339, 71, - 1340, 71, 71, 1342, 1351, 1344, 1352, 1348, 71, 1350, + 1303, 1304, 1297, 71, 71, 71, 71, 71, 1305, 1301, + 1299, 71, 71, 1307, 71, 1306, 1317, 1302, 1308, 1312, + 1309, 71, 1310, 71, 1311, 1318, 1313, 71, 1314, 1315, + 1316, 71, 71, 71, 1322, 71, 71, 71, 1319, 1323, + 71, 1325, 1321, 71, 71, 71, 71, 1331, 71, 1320, + 71, 1326, 1327, 71, 71, 1332, 1333, 1324, 71, 71, + 1330, 71, 71, 1328, 1329, 71, 1335, 71, 1338, 71, + 3093, 1337, 1334, 1336, 1340, 1341, 71, 1343, 71, 71, + 71, 1344, 1342, 1345, 71, 71, 71, 1349, 71, 1346, + 1339, 71, 1351, 71, 71, 1348, 71, 1352, 71, 1353, - 1353, 71, 71, 1354, 71, 1356, 1355, 1357, 71, 71, - 71, 71, 1362, 1363, 1365, 1359, 71, 1360, 71, 71, - 71, 1364, 71, 71, 1361, 71, 1358, 1369, 71, 71, - 71, 1366, 71, 1373, 1374, 71, 1368, 1376, 71, 71, - 71, 1375, 1367, 71, 71, 71, 71, 71, 71, 1370, - 1371, 71, 1377, 71, 1383, 1372, 71, 1380, 1378, 71, - 1381, 71, 1388, 71, 1379, 1382, 1387, 71, 1384, 71, - 3048, 71, 1390, 1392, 1386, 71, 1385, 71, 1393, 71, - 71, 71, 1389, 71, 1395, 1396, 71, 71, 1391, 1394, - 71, 71, 1401, 1403, 1397, 1402, 1398, 1405, 1399, 71, + 71, 1356, 71, 71, 1347, 71, 71, 71, 1358, 71, + 71, 1350, 1360, 71, 71, 1362, 71, 1364, 1361, 1354, + 71, 1355, 71, 1357, 71, 1366, 1359, 1367, 1363, 71, + 71, 1365, 1368, 71, 1369, 1370, 71, 1371, 1372, 71, + 71, 71, 71, 1377, 1378, 1380, 1374, 71, 1375, 71, + 71, 71, 1379, 71, 71, 1376, 71, 1373, 1384, 71, + 71, 71, 1381, 71, 1388, 1389, 71, 1383, 1391, 71, + 71, 71, 1390, 1382, 71, 71, 71, 71, 71, 71, + 1385, 1386, 71, 1392, 71, 1398, 1387, 71, 1395, 1393, + 71, 1396, 71, 1403, 71, 1394, 1397, 1402, 71, 1399, - 1404, 1400, 71, 71, 71, 71, 1406, 1408, 71, 1410, - 1407, 71, 1409, 71, 71, 71, 1413, 71, 71, 1415, - 71, 71, 1420, 1412, 71, 71, 1414, 71, 1421, 71, - 1411, 1417, 71, 1424, 71, 1416, 1418, 71, 1419, 71, - 71, 1425, 71, 1422, 71, 71, 1423, 71, 1427, 1431, - 1433, 1426, 1428, 71, 1432, 1429, 71, 71, 1436, 71, - 71, 1430, 71, 71, 1441, 1435, 1438, 1442, 1440, 71, - 71, 1434, 71, 71, 1437, 71, 1443, 71, 1444, 1445, - 71, 71, 71, 1439, 71, 1446, 1449, 1448, 71, 71, - 1452, 1447, 71, 71, 71, 1451, 71, 71, 1458, 1450, + 71, 3093, 71, 1405, 1407, 1401, 71, 1400, 71, 1408, + 71, 71, 71, 1404, 71, 1410, 1411, 71, 71, 1406, + 1409, 71, 71, 1416, 1418, 1412, 1417, 1413, 1420, 1414, + 71, 1419, 1415, 71, 71, 71, 71, 1421, 1423, 71, + 1425, 1422, 71, 1424, 71, 71, 71, 1428, 71, 71, + 1430, 71, 71, 1435, 1427, 71, 71, 1429, 71, 1436, + 71, 1426, 1432, 71, 1439, 71, 1431, 1433, 71, 1434, + 71, 71, 1440, 71, 1437, 71, 71, 1438, 71, 1442, + 1446, 1448, 1441, 1443, 71, 1447, 1444, 71, 71, 1451, + 71, 71, 1445, 71, 71, 1456, 1450, 1453, 1457, 1455, - 1460, 1454, 1455, 1459, 71, 1461, 71, 71, 1456, 71, - 1463, 71, 1453, 71, 71, 1457, 71, 71, 71, 71, - 1471, 1467, 71, 1466, 71, 1474, 71, 1462, 71, 1472, - 1464, 71, 1465, 71, 1477, 71, 1468, 1470, 1469, 1476, - 71, 71, 71, 71, 71, 71, 3048, 1475, 1473, 71, - 71, 1485, 71, 71, 1478, 1486, 1488, 71, 1482, 71, - 1479, 1480, 1481, 1491, 1484, 1487, 1483, 1489, 71, 71, - 71, 71, 71, 71, 1490, 1495, 71, 71, 71, 1496, - 1493, 1498, 71, 1492, 71, 1494, 1502, 71, 1504, 1503, - 71, 71, 1497, 1499, 71, 71, 71, 1500, 1501, 71, + 71, 71, 1449, 71, 71, 1452, 71, 1458, 71, 1459, + 1460, 71, 71, 71, 1454, 71, 1461, 1464, 1463, 71, + 71, 1467, 1462, 71, 71, 71, 1466, 71, 71, 1473, + 1465, 1475, 1469, 1470, 1474, 71, 1476, 71, 71, 1471, + 71, 1478, 71, 1468, 71, 71, 1472, 71, 71, 71, + 71, 1486, 1482, 71, 1481, 71, 1489, 71, 1477, 71, + 1487, 1479, 71, 1480, 71, 1492, 71, 1483, 1485, 1484, + 1491, 71, 71, 71, 71, 71, 71, 71, 1490, 1488, + 71, 71, 1500, 71, 71, 1493, 1501, 71, 3093, 1497, + 71, 1494, 1495, 1496, 1508, 1499, 1502, 1498, 71, 1504, - 1507, 71, 71, 1508, 1506, 1505, 1509, 71, 1513, 1514, - 71, 71, 71, 71, 71, 71, 1510, 1519, 1517, 1511, - 71, 1518, 71, 71, 1521, 71, 71, 1512, 71, 1515, - 71, 1522, 71, 1516, 71, 1520, 1523, 71, 1524, 71, - 71, 1528, 1525, 1526, 71, 1529, 71, 71, 71, 1530, - 1527, 71, 1533, 71, 1535, 71, 71, 71, 1539, 71, - 1531, 71, 1534, 71, 71, 1532, 71, 71, 1542, 1536, - 1537, 1544, 71, 1540, 71, 71, 1547, 71, 1545, 1541, - 71, 1538, 1543, 71, 1546, 71, 71, 1550, 1548, 71, - 1552, 1549, 1553, 71, 71, 71, 1551, 71, 71, 1560, + 1505, 71, 71, 1503, 1506, 71, 71, 1507, 71, 71, + 71, 1509, 1512, 71, 1515, 1510, 1513, 71, 71, 1519, + 71, 1511, 71, 71, 1521, 71, 71, 1520, 1516, 1514, + 71, 71, 71, 71, 1518, 71, 1524, 1517, 1522, 1523, + 71, 71, 1530, 1528, 1525, 1526, 1531, 71, 71, 71, + 71, 71, 1527, 1529, 1536, 1534, 1533, 71, 1535, 71, + 71, 1538, 71, 71, 1540, 71, 1539, 1532, 71, 71, + 71, 1537, 1543, 71, 71, 1541, 71, 1546, 71, 71, + 71, 71, 1545, 71, 1542, 1550, 71, 1552, 71, 1547, + 1544, 71, 71, 1556, 71, 1551, 71, 71, 1549, 1548, - 71, 71, 71, 1555, 1554, 1561, 71, 71, 71, 1558, - 1569, 1564, 1565, 1556, 1557, 71, 71, 1567, 71, 71, - 71, 1562, 1559, 1568, 1571, 71, 1563, 71, 1566, 71, - 71, 1573, 71, 1575, 1572, 71, 71, 1578, 71, 1570, - 1576, 71, 1579, 71, 1574, 71, 71, 71, 1584, 1583, - 71, 71, 1580, 1577, 71, 71, 71, 1600, 1590, 1591, - 1582, 1581, 1585, 71, 71, 71, 1587, 71, 1592, 1588, - 71, 1586, 1598, 1602, 71, 1595, 1594, 1597, 71, 71, - 1596, 1589, 71, 71, 1593, 71, 1601, 1599, 1603, 71, - 71, 71, 71, 71, 1609, 1610, 1608, 71, 71, 1612, + 71, 1553, 1559, 1554, 1561, 71, 71, 71, 1557, 71, + 1562, 71, 1564, 71, 1558, 1560, 1555, 71, 71, 71, + 71, 1567, 1570, 71, 1566, 1569, 71, 1563, 71, 71, + 71, 1565, 71, 1572, 71, 1577, 71, 1568, 71, 71, + 71, 1578, 71, 1575, 1571, 71, 3093, 1573, 1574, 1581, + 1582, 71, 1579, 1584, 1586, 1576, 71, 1588, 1580, 1583, + 71, 1585, 1587, 71, 71, 1590, 71, 71, 71, 71, + 71, 71, 1595, 71, 1592, 1593, 71, 1596, 1589, 71, + 71, 71, 71, 1601, 1600, 71, 1591, 1597, 71, 71, + 71, 3093, 1607, 1594, 1608, 1599, 71, 1598, 71, 1604, - 71, 71, 1604, 1611, 71, 71, 1615, 71, 1605, 1614, - 1606, 71, 1607, 71, 71, 71, 1616, 71, 71, 71, - 1613, 1624, 71, 71, 71, 71, 71, 71, 71, 1622, - 71, 1617, 1620, 1621, 1618, 1619, 1623, 1629, 71, 1627, - 71, 71, 1625, 71, 1626, 1631, 71, 1628, 1630, 71, - 1632, 71, 71, 71, 1635, 71, 1633, 1634, 71, 71, - 1637, 71, 1639, 71, 1636, 71, 1646, 1638, 1640, 1642, - 71, 1641, 71, 1643, 1647, 71, 1648, 71, 1644, 1652, - 71, 71, 1649, 1650, 1651, 1653, 1645, 71, 71, 71, - 71, 71, 71, 1655, 1656, 71, 71, 1664, 1665, 71, + 1602, 71, 1605, 71, 1609, 1603, 71, 71, 71, 1617, + 1614, 1612, 1611, 1615, 1606, 1613, 71, 71, 1618, 71, + 1610, 1616, 1619, 71, 71, 71, 71, 71, 71, 1620, + 71, 1626, 1627, 1625, 71, 1629, 1621, 71, 71, 1628, + 71, 71, 71, 1622, 71, 1623, 71, 1624, 71, 1631, + 1632, 71, 71, 1633, 71, 71, 1641, 71, 71, 71, + 1634, 71, 71, 1630, 71, 71, 1635, 71, 1637, 1638, + 1639, 71, 1636, 71, 1640, 1646, 71, 1642, 1644, 1643, + 71, 71, 1649, 71, 71, 1648, 1645, 1647, 1650, 71, + 71, 71, 71, 71, 71, 1652, 71, 1651, 1654, 1656, - 71, 1659, 71, 71, 71, 1661, 1654, 1658, 1662, 1657, - 71, 1663, 71, 71, 1660, 71, 71, 1667, 71, 71, - 1666, 71, 1674, 71, 71, 71, 1669, 1671, 1668, 1670, - 1677, 71, 1676, 71, 1678, 1675, 1673, 71, 71, 1685, - 1680, 1672, 1682, 1681, 1686, 71, 71, 71, 1679, 71, - 71, 1691, 71, 1693, 71, 1690, 1684, 71, 1683, 1694, - 1687, 71, 1688, 1696, 71, 71, 1695, 71, 71, 71, - 1692, 1689, 1700, 1697, 71, 1704, 71, 71, 71, 1702, - 71, 71, 1699, 71, 1698, 1703, 71, 1701, 1705, 71, - 71, 71, 71, 71, 1708, 1716, 1706, 71, 1709, 1714, + 1657, 71, 1653, 1658, 1663, 1655, 1664, 71, 71, 1659, + 71, 1660, 1665, 71, 71, 71, 1661, 1668, 71, 1662, + 1666, 1669, 71, 71, 71, 71, 71, 71, 1667, 1672, + 1673, 1670, 71, 1681, 1671, 1676, 71, 71, 71, 71, + 1682, 71, 1674, 1675, 71, 1678, 1680, 71, 1679, 71, + 71, 1677, 71, 71, 1688, 71, 71, 1684, 1683, 1689, + 71, 1690, 71, 1686, 1691, 1685, 1687, 71, 1694, 71, + 71, 1696, 71, 1693, 71, 1697, 71, 1698, 1692, 71, + 71, 1700, 1705, 71, 1701, 1695, 71, 1706, 71, 71, + 71, 1699, 1702, 1711, 71, 1710, 71, 1707, 1704, 71, - 71, 71, 1707, 1710, 1711, 1717, 1712, 1713, 71, 71, - 1718, 71, 71, 71, 1723, 71, 71, 71, 1727, 71, - 71, 1715, 71, 71, 3048, 71, 1722, 1720, 1719, 1729, - 71, 1721, 1725, 71, 71, 1726, 71, 1724, 1730, 1731, - 71, 1732, 1728, 1736, 71, 1735, 1734, 71, 71, 1733, - 71, 1740, 71, 71, 71, 71, 71, 71, 71, 1747, - 1738, 1742, 71, 71, 71, 71, 1737, 1741, 1743, 1739, - 1744, 1841, 71, 71, 1745, 1748, 1752, 1746, 1750, 71, - 1749, 1751, 71, 1753, 71, 71, 1756, 71, 1755, 71, - 1754, 1759, 71, 1757, 71, 71, 71, 71, 1760, 1758, + 1703, 1708, 1713, 71, 1714, 71, 3093, 71, 71, 1716, + 71, 1709, 1712, 1715, 71, 71, 1718, 1720, 71, 1719, + 1717, 71, 1724, 71, 1722, 71, 1726, 71, 71, 71, + 1723, 1721, 71, 1725, 71, 71, 71, 1728, 71, 1734, + 71, 1729, 71, 1736, 71, 1737, 1727, 1730, 1731, 71, + 1732, 71, 1733, 71, 71, 1738, 71, 1743, 71, 71, + 71, 1735, 71, 71, 1739, 1747, 71, 71, 71, 1742, + 71, 1740, 1749, 1741, 71, 1745, 71, 71, 1746, 1750, + 1744, 1751, 1748, 71, 71, 1755, 1753, 71, 1752, 71, + 1754, 1756, 71, 1760, 71, 71, 71, 71, 71, 1758, - 71, 71, 71, 71, 71, 71, 1765, 71, 71, 1769, - 71, 71, 1766, 3048, 71, 1775, 1761, 1767, 1763, 1762, - 1764, 71, 1768, 1770, 71, 1778, 1773, 71, 1772, 1777, - 71, 71, 1779, 1774, 71, 71, 1771, 71, 71, 1776, - 1783, 71, 1786, 1787, 71, 71, 1780, 1788, 71, 71, - 1781, 1784, 71, 1785, 71, 1782, 1790, 71, 71, 1791, - 1794, 71, 71, 1796, 71, 1789, 1795, 1797, 1798, 71, - 1792, 1800, 1799, 1793, 71, 71, 71, 71, 1805, 1802, - 1803, 71, 71, 1804, 71, 71, 71, 71, 1812, 71, - 1814, 71, 71, 71, 71, 1815, 71, 1806, 1807, 1808, + 71, 71, 71, 1757, 1762, 1767, 71, 71, 1759, 1761, + 1763, 71, 1764, 1770, 1768, 1765, 1771, 71, 71, 71, + 71, 1766, 1772, 1774, 1769, 1773, 71, 1776, 71, 1775, + 1777, 71, 71, 71, 1779, 71, 71, 71, 1780, 71, + 1778, 71, 71, 71, 71, 71, 1785, 71, 71, 71, + 1789, 71, 1786, 1790, 1797, 71, 1781, 1783, 71, 1782, + 1784, 1787, 1788, 1793, 71, 71, 1791, 1798, 1792, 1795, + 1794, 71, 1799, 71, 71, 71, 71, 71, 1803, 71, + 1796, 71, 1806, 1807, 71, 1808, 71, 1810, 71, 71, + 1800, 1801, 71, 1804, 1802, 1805, 71, 1809, 71, 1811, - 1801, 71, 71, 1817, 1809, 1816, 1810, 1811, 1819, 1813, - 1820, 71, 1822, 1818, 71, 71, 71, 1824, 71, 71, - 1821, 71, 1826, 71, 71, 1829, 1830, 71, 71, 1832, - 71, 71, 71, 71, 71, 1823, 1838, 71, 1837, 1827, - 71, 1825, 1834, 1835, 71, 1828, 71, 71, 1831, 71, - 71, 1844, 71, 1836, 71, 1842, 1833, 71, 71, 1848, - 71, 1839, 1840, 1847, 71, 71, 1851, 1850, 1852, 1854, - 1846, 71, 71, 71, 71, 1843, 71, 1849, 1845, 1853, - 71, 71, 1855, 71, 71, 71, 1859, 71, 1862, 71, - 1863, 1856, 71, 1858, 71, 1857, 71, 71, 1866, 71, + 1814, 71, 71, 1816, 71, 1818, 1815, 1817, 71, 71, + 1812, 71, 1820, 1813, 1819, 71, 71, 71, 71, 1822, + 1823, 71, 71, 1824, 1825, 71, 1832, 1826, 1827, 1828, + 71, 71, 71, 1821, 1829, 1834, 71, 1830, 71, 71, + 1835, 71, 71, 71, 1837, 1831, 1840, 71, 71, 1838, + 1836, 1833, 71, 71, 1839, 71, 1841, 1844, 71, 71, + 1846, 71, 71, 1842, 71, 1849, 1850, 71, 71, 1843, + 1852, 71, 71, 71, 1857, 1847, 71, 1858, 71, 1845, + 71, 1854, 1851, 1848, 71, 1855, 71, 71, 71, 71, + 71, 1864, 71, 1853, 1856, 1861, 1862, 71, 71, 71, - 71, 71, 1860, 1871, 71, 1870, 71, 1865, 71, 1864, - 71, 1861, 71, 71, 1867, 71, 1875, 1868, 71, 1876, - 1872, 1869, 1879, 1873, 1877, 1874, 1878, 71, 71, 1882, - 71, 1883, 71, 71, 71, 71, 71, 1889, 71, 1880, - 1886, 71, 71, 71, 1881, 1894, 1884, 1891, 1892, 71, - 71, 1893, 1885, 1890, 1887, 71, 1888, 71, 71, 1899, - 71, 1900, 71, 1903, 1895, 1901, 1904, 71, 1896, 71, - 1902, 71, 71, 1897, 71, 71, 1908, 71, 1898, 1906, - 71, 71, 71, 71, 1910, 1913, 71, 1907, 1915, 1909, - 71, 71, 71, 1905, 71, 1911, 71, 71, 71, 71, + 1868, 1860, 71, 1867, 1871, 1859, 71, 71, 71, 1870, + 71, 1874, 71, 1866, 1872, 1863, 71, 71, 1865, 1869, + 1875, 71, 71, 71, 71, 1877, 1873, 1876, 1878, 71, + 71, 71, 1881, 71, 1884, 1885, 1880, 71, 71, 71, + 71, 71, 1879, 1888, 71, 71, 1893, 71, 1882, 71, + 1892, 71, 1887, 3093, 71, 71, 71, 1883, 1886, 1889, + 1890, 71, 1898, 71, 1899, 1897, 1891, 1901, 1894, 1895, + 1896, 1900, 71, 71, 1904, 71, 71, 71, 71, 71, + 71, 71, 1911, 1908, 1902, 71, 71, 71, 71, 1903, + 1913, 1906, 1914, 71, 71, 1915, 71, 1905, 1907, 71, - 1920, 1925, 1916, 1919, 1917, 71, 1912, 71, 1914, 71, - 1921, 1922, 71, 1923, 71, 1918, 71, 1932, 71, 1924, - 71, 71, 1926, 1927, 71, 71, 1928, 71, 1931, 1930, - 1929, 71, 1933, 71, 71, 71, 1937, 71, 71, 1934, - 1936, 71, 71, 1938, 71, 1935, 1939, 1940, 1941, 71, - 71, 71, 71, 1943, 71, 1948, 1946, 71, 1942, 1947, - 71, 71, 71, 71, 71, 1953, 71, 71, 1944, 1950, - 1945, 71, 71, 71, 1957, 1949, 1954, 1952, 71, 1959, - 1951, 1956, 71, 71, 1955, 1963, 71, 1958, 1961, 71, - 71, 71, 1960, 1964, 71, 1962, 71, 1969, 71, 71, + 1909, 1910, 1912, 1916, 71, 1917, 1920, 1921, 71, 1922, + 71, 1923, 1925, 1926, 71, 1918, 1924, 71, 71, 71, + 1919, 71, 71, 1930, 71, 71, 1928, 71, 71, 71, + 71, 1932, 1935, 1937, 1929, 71, 1931, 1933, 71, 71, + 1927, 71, 71, 71, 71, 1943, 71, 1938, 1941, 1942, + 1944, 71, 1936, 1934, 1939, 1945, 71, 71, 1947, 71, + 1940, 71, 71, 71, 71, 1948, 1949, 71, 1950, 71, + 1953, 71, 1951, 71, 1952, 71, 1955, 1946, 71, 71, + 1959, 71, 71, 1954, 1958, 1956, 71, 71, 71, 71, + 1957, 1960, 1961, 1962, 1963, 71, 71, 71, 1965, 71, - 1971, 71, 71, 71, 1972, 1965, 71, 1966, 1975, 1967, - 1968, 1973, 71, 71, 1974, 1970, 71, 1977, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 1978, 3048, 71, - 71, 1985, 1980, 1976, 1981, 1982, 1989, 71, 71, 1984, - 1979, 1988, 71, 71, 1986, 1992, 1987, 1983, 1990, 71, - 71, 71, 71, 1996, 1993, 1995, 71, 71, 1991, 71, - 71, 1998, 71, 1994, 1999, 71, 71, 71, 2000, 2004, - 1997, 2002, 71, 71, 2006, 2008, 71, 2003, 2001, 71, - 71, 71, 2011, 71, 71, 2005, 2010, 2007, 2012, 2013, - 71, 71, 2016, 71, 71, 71, 71, 71, 71, 2017, + 71, 1970, 71, 1968, 71, 1969, 1964, 71, 71, 71, + 71, 1975, 71, 1972, 1966, 71, 1967, 71, 1979, 71, + 1971, 71, 1976, 1974, 1978, 71, 1973, 71, 1980, 71, + 1977, 71, 1983, 1981, 1985, 71, 71, 71, 71, 1986, + 71, 3093, 1984, 1991, 71, 1993, 1982, 1987, 71, 71, + 1994, 71, 1990, 1988, 71, 1989, 1995, 71, 71, 1996, + 71, 1997, 71, 1999, 71, 71, 71, 71, 71, 2000, + 71, 71, 71, 71, 2011, 71, 2007, 2002, 1998, 2003, + 2004, 71, 71, 71, 2010, 2001, 2006, 71, 2015, 2008, + 2014, 71, 2005, 2009, 71, 71, 2018, 71, 71, 2012, - 71, 2022, 71, 2019, 71, 2009, 2018, 2026, 2014, 71, - 2023, 2015, 2024, 71, 2021, 2020, 71, 71, 71, 2028, - 71, 2027, 2031, 71, 2025, 71, 2029, 71, 2033, 71, - 2034, 71, 2032, 71, 2030, 71, 71, 71, 2036, 2040, - 2035, 71, 71, 2037, 2038, 2042, 71, 2039, 71, 71, - 2043, 71, 71, 2045, 2046, 2044, 71, 2041, 71, 71, - 71, 2047, 2049, 2048, 2052, 71, 71, 71, 2050, 2051, - 2053, 71, 71, 71, 71, 71, 71, 2054, 71, 71, - 2061, 2056, 2055, 2062, 2058, 2059, 2057, 71, 2063, 71, - 71, 71, 71, 2064, 2060, 2066, 2072, 71, 71, 2067, + 2017, 71, 2013, 2020, 71, 71, 71, 71, 2021, 71, + 71, 2016, 2026, 2022, 71, 2019, 2024, 71, 2025, 2028, + 71, 2030, 71, 2023, 71, 71, 71, 2033, 2027, 2032, + 71, 2034, 71, 71, 2029, 2035, 2038, 71, 71, 71, + 2031, 2042, 71, 2039, 71, 71, 2043, 71, 71, 2041, + 2036, 71, 2040, 2037, 2047, 71, 2044, 71, 2048, 2046, + 71, 2051, 71, 2045, 71, 71, 2049, 71, 71, 2052, + 2053, 2056, 71, 2054, 2057, 71, 2058, 71, 2059, 71, + 2050, 2055, 71, 71, 71, 71, 71, 2061, 2060, 71, + 71, 2065, 2067, 2063, 71, 2069, 2064, 2068, 71, 71, - 71, 71, 2074, 71, 71, 2068, 2065, 2071, 2076, 2069, - 2073, 71, 71, 71, 3048, 2079, 2077, 2070, 2081, 2075, - 2080, 71, 2082, 71, 71, 2078, 2083, 71, 71, 2086, - 71, 71, 2087, 2085, 71, 2084, 2091, 71, 71, 2092, - 71, 71, 2095, 2090, 71, 71, 2088, 71, 71, 2096, - 71, 2097, 2093, 2098, 71, 71, 2100, 2089, 71, 2094, - 2099, 71, 71, 2105, 71, 2101, 71, 2102, 2103, 71, - 2104, 71, 71, 71, 71, 71, 2108, 71, 71, 2112, - 2114, 71, 2115, 71, 2107, 71, 71, 71, 71, 2106, - 2109, 2110, 2117, 2111, 71, 71, 71, 71, 2116, 2113, + 71, 2062, 2070, 71, 71, 2072, 2066, 2074, 2073, 71, + 71, 2071, 2077, 71, 71, 71, 71, 71, 2076, 71, + 71, 71, 71, 71, 2075, 71, 71, 2086, 2078, 2083, + 2081, 2080, 2079, 2084, 2082, 2088, 71, 71, 71, 71, + 2085, 2087, 71, 2089, 2091, 71, 2092, 3093, 71, 71, + 2095, 2097, 71, 71, 2093, 71, 2090, 2096, 2098, 2101, + 2094, 2099, 71, 71, 2100, 2104, 2103, 2106, 2102, 2107, + 2105, 71, 71, 71, 71, 71, 71, 2108, 2111, 71, + 2109, 71, 71, 2112, 2116, 71, 71, 2117, 71, 71, + 2115, 71, 2120, 71, 71, 2126, 2110, 2113, 71, 2121, - 2119, 2121, 2124, 71, 71, 2120, 71, 2122, 71, 71, - 71, 2118, 2125, 2123, 71, 71, 2126, 71, 71, 71, - 2135, 71, 71, 71, 71, 2127, 2136, 2132, 71, 2130, - 2290, 2128, 2138, 2129, 2134, 2131, 71, 2137, 2133, 71, - 2140, 2139, 2141, 71, 2142, 71, 71, 71, 2145, 71, - 71, 2143, 2148, 71, 71, 2149, 71, 71, 2146, 2144, - 71, 2147, 2150, 2154, 71, 2155, 71, 71, 2157, 71, - 71, 71, 2153, 71, 2151, 71, 2152, 2159, 71, 71, - 2162, 71, 2163, 71, 2161, 2164, 2156, 71, 2158, 71, - 2160, 71, 2167, 71, 2169, 71, 2165, 71, 2168, 2171, + 2118, 71, 2122, 2123, 71, 71, 2125, 2119, 2114, 71, + 2124, 71, 71, 2127, 71, 2128, 71, 71, 71, 2130, + 71, 71, 71, 2133, 71, 71, 2139, 71, 71, 2137, + 71, 71, 2132, 71, 2129, 2140, 71, 2135, 2134, 2131, + 71, 2142, 2136, 2141, 71, 2144, 71, 2138, 71, 2146, + 2149, 71, 71, 71, 71, 71, 2143, 71, 71, 2145, + 2150, 2147, 71, 71, 2148, 71, 71, 71, 2160, 71, + 71, 71, 2151, 2152, 2161, 2157, 71, 2155, 2153, 2162, + 71, 2154, 2159, 2156, 2163, 71, 2158, 71, 2165, 2164, + 2166, 71, 2167, 71, 71, 2168, 71, 2170, 2169, 2173, - 71, 71, 71, 2166, 71, 2174, 71, 2173, 71, 2175, - 2170, 2177, 71, 71, 71, 2172, 2181, 71, 71, 71, - 71, 2179, 71, 2178, 2176, 71, 2185, 2186, 71, 71, - 2190, 71, 2180, 71, 2182, 2184, 71, 71, 2187, 71, - 2188, 2183, 71, 2192, 2189, 71, 71, 2197, 71, 71, - 2199, 2193, 71, 2191, 71, 2200, 71, 2194, 2198, 71, - 2195, 2204, 71, 71, 2205, 71, 2203, 71, 71, 71, - 2201, 2196, 2202, 2209, 2211, 71, 2207, 71, 2214, 71, - 2212, 71, 2216, 71, 71, 71, 2208, 2206, 71, 71, - 2217, 71, 2213, 2210, 2218, 71, 2220, 71, 2221, 71, + 71, 71, 71, 2171, 71, 71, 2172, 2174, 71, 2175, + 2179, 71, 2180, 71, 71, 2182, 71, 71, 2184, 71, + 2178, 2176, 71, 71, 71, 2177, 2187, 71, 2186, 2188, + 71, 71, 71, 2181, 71, 2183, 71, 2185, 2189, 71, + 2190, 2193, 2194, 71, 2196, 71, 2191, 71, 71, 71, + 71, 2200, 2199, 2192, 2198, 2202, 71, 71, 2195, 71, + 71, 71, 2205, 71, 71, 2197, 2201, 2208, 71, 71, + 71, 71, 2213, 71, 2204, 2212, 2203, 71, 2206, 71, + 2207, 71, 71, 71, 2209, 2211, 2217, 71, 71, 71, + 2219, 71, 2210, 71, 2215, 71, 2214, 2216, 71, 2224, - 2215, 71, 71, 71, 71, 2226, 2219, 2227, 2222, 2228, - 2223, 2224, 2225, 71, 71, 71, 71, 2230, 2229, 71, - 2232, 2233, 71, 2234, 2236, 2231, 2237, 71, 71, 71, - 71, 2235, 2240, 71, 71, 71, 71, 71, 71, 2242, - 2247, 71, 71, 71, 2238, 2239, 2248, 2243, 71, 2241, - 2251, 71, 2244, 2245, 2246, 71, 2252, 2253, 71, 71, - 2250, 71, 2254, 2249, 2256, 2257, 2255, 2258, 71, 71, - 71, 71, 71, 2260, 71, 71, 71, 71, 2264, 2265, - 71, 3048, 71, 2259, 71, 71, 2261, 2267, 2268, 2262, - 71, 2270, 71, 2269, 2266, 2263, 71, 71, 71, 71, + 71, 2218, 2220, 71, 2225, 2226, 71, 2221, 71, 2222, + 71, 2227, 2230, 71, 71, 2231, 71, 71, 2232, 2223, + 71, 71, 2236, 71, 71, 71, 2228, 2234, 2229, 2238, + 2239, 2233, 2241, 2243, 71, 71, 2240, 2235, 71, 71, + 2244, 71, 71, 71, 2242, 71, 2237, 2245, 2248, 71, + 71, 71, 2249, 71, 2247, 2254, 71, 2255, 2250, 2246, + 2251, 71, 2252, 71, 2253, 71, 71, 71, 2259, 2256, + 71, 2260, 71, 2261, 71, 2258, 2257, 71, 71, 71, + 71, 2262, 2267, 71, 71, 71, 71, 71, 71, 2268, + 2263, 2274, 2264, 2269, 2265, 2266, 2271, 2270, 71, 2273, - 71, 2271, 71, 2274, 2275, 71, 2272, 2277, 71, 71, - 71, 71, 71, 2276, 71, 2281, 2284, 71, 2273, 2283, - 71, 71, 71, 2285, 2280, 71, 71, 2289, 2278, 2279, - 2288, 71, 2282, 71, 71, 71, 2291, 2287, 2286, 2297, - 2292, 71, 2293, 71, 71, 2296, 2294, 2298, 71, 2300, - 71, 71, 71, 71, 2302, 71, 71, 2295, 71, 71, - 2299, 2301, 71, 71, 2306, 71, 71, 71, 2308, 2303, - 2304, 2309, 2310, 71, 2305, 2311, 71, 2312, 71, 2313, - 71, 2314, 71, 71, 71, 2316, 2319, 71, 2307, 2315, - 71, 2321, 71, 71, 2324, 71, 2318, 71, 71, 2320, + 71, 2272, 71, 2275, 2278, 71, 71, 2279, 2280, 71, + 71, 71, 2283, 2281, 2277, 2284, 2282, 71, 71, 71, + 2276, 71, 2285, 71, 71, 2287, 71, 71, 71, 2291, + 2292, 2286, 71, 2289, 71, 71, 71, 2294, 2288, 2295, + 71, 2297, 71, 2296, 71, 71, 2290, 71, 2293, 2298, + 71, 71, 2302, 71, 2299, 2301, 71, 71, 71, 71, + 71, 2304, 71, 2303, 2308, 71, 2311, 2300, 71, 71, + 2310, 71, 71, 2307, 2312, 71, 2315, 2305, 2306, 2316, + 71, 71, 2309, 2318, 71, 71, 71, 2313, 2317, 71, + 2320, 2314, 71, 71, 2323, 2321, 71, 2325, 2319, 71, - 71, 2317, 71, 2327, 2328, 71, 71, 71, 2323, 71, - 2322, 2329, 71, 71, 2332, 2333, 71, 2325, 2326, 71, - 71, 2331, 71, 71, 71, 2330, 71, 2337, 71, 2339, - 2334, 2379, 2336, 2335, 2340, 71, 2341, 71, 2342, 71, - 2343, 71, 71, 2338, 2345, 71, 71, 2347, 71, 2348, - 2346, 71, 71, 71, 2344, 71, 2353, 71, 71, 2355, - 71, 2356, 71, 2349, 2350, 71, 71, 71, 71, 71, - 71, 2352, 71, 2351, 2359, 2362, 2357, 2354, 2358, 71, - 2360, 2365, 71, 71, 71, 71, 71, 71, 71, 2361, - 71, 2372, 2363, 2366, 71, 71, 71, 71, 71, 2364, + 2324, 2327, 71, 71, 71, 2329, 71, 71, 71, 71, + 71, 2326, 2322, 2328, 2333, 71, 71, 71, 71, 2337, + 71, 2335, 2331, 2336, 2339, 2330, 2332, 2338, 71, 71, + 71, 71, 2340, 2341, 71, 71, 71, 71, 71, 2343, + 2345, 2334, 2348, 71, 71, 71, 2350, 71, 2346, 71, + 2347, 2342, 71, 2349, 2344, 2353, 71, 71, 71, 2356, + 2357, 71, 2352, 2351, 71, 71, 71, 71, 2354, 2358, + 71, 2361, 2362, 71, 71, 2355, 2360, 71, 71, 71, + 71, 2369, 71, 2359, 2366, 2368, 71, 2363, 2364, 2365, + 2370, 71, 2371, 71, 2372, 71, 71, 71, 2367, 71, - 2369, 71, 2371, 2373, 71, 2368, 2383, 71, 3048, 2367, - 2370, 2374, 2375, 2376, 71, 71, 71, 71, 2380, 2381, - 2377, 2382, 2384, 71, 2378, 71, 2385, 71, 2386, 71, - 2387, 71, 71, 2388, 71, 71, 2390, 71, 71, 71, - 71, 71, 2389, 2397, 71, 71, 71, 2395, 71, 2401, - 2402, 71, 2391, 2392, 71, 71, 2393, 2394, 71, 2396, - 2398, 71, 2399, 2400, 2404, 2405, 71, 2406, 2403, 2407, - 71, 71, 2408, 71, 71, 71, 71, 71, 2410, 2409, - 71, 2416, 71, 2417, 71, 2418, 71, 71, 2411, 71, - 71, 71, 2412, 2413, 71, 2415, 2414, 2423, 71, 2422, + 2376, 71, 2375, 71, 2374, 71, 2377, 71, 2373, 71, + 2382, 71, 71, 2378, 71, 2379, 2384, 71, 2385, 71, + 71, 71, 71, 71, 71, 2381, 2387, 2380, 71, 2388, + 71, 2383, 2386, 2391, 71, 2389, 2394, 71, 71, 71, + 2390, 71, 71, 2395, 2392, 71, 71, 71, 2401, 71, + 2393, 71, 71, 71, 2398, 71, 71, 71, 2402, 2397, + 2400, 71, 71, 2405, 2396, 2408, 2399, 2403, 2404, 71, + 2409, 71, 2418, 2406, 2410, 2417, 2411, 71, 2407, 2412, + 71, 2413, 71, 71, 2414, 71, 2415, 71, 2416, 71, + 71, 71, 71, 71, 71, 71, 2419, 2426, 71, 71, - 2427, 71, 2420, 2425, 2419, 71, 71, 2426, 2421, 71, - 2424, 2428, 2429, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 2431, 2435, 2430, 71, 71, 2433, 2439, - 2440, 71, 2443, 71, 2432, 71, 71, 2434, 2436, 2437, - 2442, 2438, 2441, 71, 71, 2447, 71, 2444, 2446, 2448, - 2445, 71, 71, 2451, 71, 71, 71, 71, 2455, 71, - 71, 2454, 2457, 71, 71, 2453, 71, 2452, 71, 2458, - 71, 2449, 2450, 2462, 71, 2459, 71, 2463, 71, 2456, - 2465, 71, 2461, 71, 2460, 71, 71, 71, 71, 2470, - 71, 2472, 71, 71, 71, 2468, 2466, 2469, 2467, 2473, + 71, 71, 2424, 71, 2430, 2431, 71, 71, 2421, 2420, + 2434, 71, 2423, 2422, 2425, 71, 2433, 2428, 2427, 2429, + 2436, 71, 2432, 71, 2435, 71, 71, 71, 71, 71, + 71, 71, 71, 2439, 2445, 71, 2446, 71, 2447, 71, + 71, 2437, 2440, 2438, 71, 71, 2441, 2442, 2443, 2444, + 2450, 71, 71, 71, 71, 2449, 2451, 2448, 2454, 71, + 71, 2455, 2456, 71, 71, 2452, 2457, 2458, 71, 2460, + 71, 71, 2453, 2459, 71, 71, 71, 71, 71, 71, + 2464, 71, 71, 2462, 2468, 2469, 71, 2472, 71, 2461, + 71, 71, 2470, 71, 2463, 71, 2465, 2466, 71, 2467, - 2464, 71, 2471, 71, 71, 71, 2474, 2475, 2476, 71, - 71, 71, 2477, 71, 71, 71, 71, 3048, 2479, 2480, - 2482, 2483, 2485, 71, 2478, 2481, 2486, 71, 2484, 71, - 71, 71, 2489, 2491, 3048, 2488, 2487, 71, 71, 71, - 71, 2493, 2492, 71, 2496, 71, 2497, 71, 2495, 2490, - 71, 2499, 71, 2494, 71, 2501, 71, 2500, 71, 71, - 2502, 71, 71, 2498, 2503, 2505, 71, 2504, 71, 71, - 2506, 71, 71, 2507, 71, 2512, 2521, 2511, 2508, 2513, - 71, 71, 2510, 71, 71, 71, 71, 2509, 2514, 2516, - 71, 71, 2515, 2517, 71, 71, 2519, 71, 2518, 2520, + 2471, 2473, 2475, 71, 2478, 71, 2474, 2477, 2476, 71, + 71, 2482, 71, 71, 71, 2480, 71, 2486, 71, 71, + 2485, 71, 2479, 2484, 71, 2483, 2488, 71, 71, 2489, + 2481, 71, 71, 2492, 2493, 71, 71, 2490, 2487, 71, + 2494, 2496, 71, 71, 71, 71, 71, 2491, 71, 2497, + 2501, 71, 71, 2499, 2495, 2500, 2498, 2503, 71, 71, + 2502, 71, 2506, 71, 2504, 71, 2505, 71, 2507, 71, + 71, 2509, 71, 2508, 71, 71, 2510, 2511, 71, 2513, + 2514, 2516, 71, 2517, 71, 2512, 71, 2515, 71, 71, + 71, 2522, 71, 2518, 2519, 2523, 2520, 71, 71, 2524, - 71, 71, 2525, 71, 71, 71, 2523, 71, 2522, 2524, - 2530, 71, 2526, 71, 71, 71, 2534, 71, 71, 71, - 71, 2539, 71, 2527, 2532, 2528, 2529, 71, 71, 2533, - 2541, 2538, 2531, 2542, 2536, 2543, 71, 2535, 71, 71, - 2537, 71, 2544, 71, 71, 71, 2545, 71, 71, 2546, - 71, 71, 2549, 2540, 2547, 71, 2552, 2553, 71, 71, - 2548, 2554, 71, 2556, 2550, 71, 2551, 2555, 71, 71, - 2557, 2558, 71, 71, 71, 2562, 71, 71, 2560, 71, - 2563, 71, 71, 2565, 2566, 71, 2561, 2567, 71, 2559, - 71, 71, 2569, 2568, 71, 2570, 2564, 2572, 71, 71, + 71, 2527, 71, 2528, 71, 2526, 2521, 2525, 71, 2530, + 71, 71, 2532, 71, 2531, 71, 2536, 2533, 71, 71, + 2534, 2529, 71, 71, 2535, 71, 71, 2537, 2540, 71, + 2538, 71, 2543, 2544, 71, 2539, 71, 2541, 71, 71, + 71, 2545, 71, 71, 71, 2547, 2546, 2548, 2550, 71, + 71, 71, 2542, 71, 2549, 2551, 71, 71, 2556, 71, + 71, 71, 2554, 71, 2553, 2555, 71, 2552, 2557, 2561, + 71, 71, 71, 2565, 71, 71, 71, 71, 71, 2558, + 2563, 2559, 2560, 71, 71, 2562, 2572, 2564, 2569, 2570, + 71, 2567, 71, 2573, 2566, 2574, 2579, 2568, 71, 71, - 2573, 2574, 71, 2576, 71, 71, 71, 71, 2580, 2575, - 71, 2571, 2581, 71, 71, 71, 71, 2583, 2577, 2582, - 71, 2579, 2584, 71, 2578, 71, 2589, 71, 2592, 71, - 71, 2588, 71, 2585, 2591, 71, 2586, 71, 71, 71, - 2587, 2595, 2593, 2594, 71, 71, 71, 2597, 71, 71, - 3048, 2600, 2590, 71, 2604, 71, 71, 71, 71, 71, - 2606, 71, 2598, 2599, 2596, 71, 2601, 2603, 2607, 2602, - 2605, 2611, 2608, 2610, 2614, 71, 2612, 71, 2609, 71, - 2613, 71, 2615, 71, 2616, 71, 2617, 71, 2618, 71, - 71, 71, 71, 71, 2620, 2619, 71, 2626, 71, 71, + 71, 71, 71, 2571, 2575, 71, 2576, 2577, 2580, 2578, + 71, 71, 71, 2581, 71, 2582, 71, 71, 2585, 2586, + 71, 2587, 71, 2588, 71, 71, 2583, 71, 71, 2589, + 71, 2584, 2590, 2591, 71, 2593, 2595, 71, 71, 71, + 2598, 2596, 71, 2599, 71, 2600, 71, 71, 2592, 2594, + 2601, 71, 71, 71, 2605, 71, 71, 2606, 2597, 2607, + 71, 71, 2609, 71, 2602, 71, 71, 71, 2613, 71, + 2603, 2614, 71, 2604, 71, 71, 2608, 2616, 2610, 2615, + 71, 2612, 2617, 71, 2611, 71, 71, 71, 2622, 2625, + 71, 71, 2618, 2621, 71, 2624, 71, 71, 71, 71, - 71, 2623, 2627, 2629, 71, 71, 2631, 71, 71, 71, - 2621, 3048, 2630, 2624, 2632, 71, 2625, 2622, 2628, 2633, - 71, 71, 71, 71, 2634, 71, 2637, 2638, 71, 2639, - 2635, 2636, 2640, 71, 2642, 71, 71, 71, 71, 2643, - 71, 71, 2646, 71, 2645, 2647, 71, 71, 2641, 2644, - 2648, 71, 2649, 71, 71, 71, 2652, 71, 71, 71, - 3048, 2651, 2657, 71, 2655, 2653, 2650, 71, 71, 71, - 2658, 2699, 2660, 71, 2661, 71, 2662, 2656, 71, 2654, - 2659, 71, 2663, 2664, 71, 2665, 2667, 71, 2666, 2668, - 71, 2669, 71, 71, 71, 71, 71, 2674, 71, 71, + 2619, 2626, 2628, 71, 71, 2620, 2627, 2630, 71, 71, + 71, 2623, 71, 2633, 2637, 71, 71, 71, 71, 71, + 2631, 2632, 2629, 71, 2653, 71, 2636, 2634, 2639, 71, + 2635, 2638, 2641, 2644, 71, 2642, 2640, 2643, 2645, 71, + 2647, 71, 2646, 71, 2648, 71, 2649, 71, 2650, 71, + 2651, 71, 71, 71, 2654, 71, 71, 2659, 71, 71, + 71, 71, 2656, 2660, 2662, 71, 71, 2652, 2663, 2664, + 71, 2665, 2666, 71, 71, 2657, 2658, 2661, 2655, 71, + 71, 71, 71, 2667, 2671, 71, 2672, 71, 2668, 2669, + 71, 71, 71, 71, 71, 2677, 2673, 2682, 71, 2670, - 2673, 2671, 2670, 71, 2675, 71, 2677, 71, 71, 2682, - 2676, 71, 71, 2672, 2678, 71, 2680, 2684, 71, 2679, - 71, 71, 71, 71, 2685, 71, 2681, 2686, 2687, 71, - 2688, 71, 2692, 71, 71, 71, 71, 2683, 71, 71, - 2689, 71, 2695, 71, 71, 2691, 2690, 2693, 2694, 2700, - 2696, 71, 2697, 2702, 71, 2704, 71, 71, 2698, 2705, - 71, 2707, 71, 71, 71, 71, 71, 2712, 71, 2701, - 2703, 2711, 71, 71, 71, 71, 2716, 71, 2706, 2708, - 2709, 2710, 2718, 71, 71, 71, 71, 71, 2720, 71, - 2721, 2717, 2713, 2715, 71, 71, 2714, 2723, 71, 2724, + 2678, 71, 2675, 2680, 71, 71, 2679, 2676, 71, 2674, + 2681, 2683, 71, 71, 71, 71, 71, 71, 2684, 71, + 71, 71, 2692, 2687, 71, 71, 2690, 2688, 71, 2695, + 2696, 2686, 2693, 2685, 71, 2697, 71, 71, 71, 2691, + 71, 2689, 2694, 2699, 3093, 2698, 71, 2700, 2702, 71, + 2701, 2703, 71, 2704, 71, 71, 71, 2706, 71, 2707, + 2709, 2708, 71, 2710, 2705, 71, 71, 2711, 2712, 71, + 71, 71, 71, 2717, 71, 71, 2715, 2719, 71, 71, + 71, 71, 71, 2713, 2720, 71, 2721, 2722, 71, 2723, + 2716, 2714, 71, 71, 2724, 2727, 71, 71, 71, 2718, - 71, 2726, 71, 71, 2719, 2731, 2728, 2725, 2722, 2730, - 71, 71, 2729, 71, 71, 2735, 71, 71, 71, 2737, - 2736, 2727, 71, 71, 2740, 2733, 2741, 71, 71, 2732, - 71, 2742, 2743, 71, 2734, 2738, 71, 71, 71, 71, - 2748, 2745, 2739, 71, 2746, 71, 71, 2751, 71, 71, - 71, 2744, 71, 2756, 71, 71, 2747, 2752, 71, 71, - 2749, 2750, 2759, 71, 3048, 2755, 71, 2753, 2758, 2760, - 71, 2761, 2762, 71, 2757, 2754, 2764, 71, 2763, 2765, - 71, 2766, 71, 71, 2768, 71, 71, 71, 2767, 71, - 71, 71, 2773, 2774, 71, 71, 71, 71, 2778, 71, + 2725, 71, 2730, 71, 71, 71, 2728, 71, 71, 71, + 2729, 71, 2726, 2731, 2735, 2734, 71, 2732, 2737, 71, + 2739, 71, 2733, 2740, 71, 2742, 71, 2738, 71, 71, + 71, 2736, 2741, 71, 2747, 71, 2748, 2750, 2746, 71, + 71, 71, 71, 71, 2743, 2744, 2745, 71, 2749, 71, + 2753, 2755, 71, 2757, 71, 71, 2754, 71, 71, 71, + 2752, 71, 2758, 2751, 2760, 71, 71, 2756, 2761, 71, + 2763, 71, 2765, 71, 2768, 2762, 2759, 71, 2767, 71, + 71, 71, 2766, 2772, 71, 2769, 71, 2774, 71, 2770, + 2764, 2773, 71, 2775, 2777, 2778, 71, 2780, 71, 2771, - 71, 2779, 71, 71, 3048, 2769, 2777, 71, 2782, 2770, - 2775, 2771, 2772, 2783, 71, 2776, 2784, 71, 71, 71, - 2780, 2781, 2787, 2785, 71, 71, 71, 71, 71, 2790, - 71, 71, 2791, 2786, 2789, 71, 2788, 71, 71, 71, - 2794, 71, 71, 71, 2796, 2792, 71, 2797, 71, 2795, - 71, 2793, 71, 71, 71, 71, 71, 2813, 71, 2806, - 2798, 2807, 2799, 2800, 2801, 2809, 2802, 71, 2808, 2803, - 2804, 71, 2810, 71, 2805, 2811, 2814, 71, 71, 2816, - 71, 71, 2815, 2817, 71, 2824, 2812, 2818, 2819, 71, - 71, 2820, 2821, 71, 71, 2822, 2823, 71, 71, 2825, + 71, 2779, 71, 71, 71, 71, 71, 2785, 71, 2782, + 2783, 71, 2776, 71, 2788, 71, 71, 71, 71, 71, + 2781, 2793, 71, 3093, 71, 2784, 2790, 71, 2786, 2787, + 2789, 71, 2792, 2795, 2796, 71, 2794, 2797, 71, 71, + 71, 2791, 71, 71, 2798, 2799, 2806, 2800, 2801, 71, + 2802, 71, 2803, 71, 71, 2805, 71, 71, 71, 2804, + 71, 2810, 2807, 2811, 71, 2808, 71, 71, 71, 71, + 2817, 71, 71, 71, 2818, 71, 2926, 71, 2816, 2809, + 71, 2814, 2821, 71, 2812, 2813, 2822, 71, 2815, 2823, + 71, 71, 2819, 2826, 2820, 71, 2824, 2825, 71, 71, - 71, 71, 71, 71, 2831, 71, 71, 2826, 2830, 71, - 2834, 2827, 2848, 2828, 71, 71, 2833, 71, 71, 71, - 71, 2829, 71, 2835, 71, 2839, 71, 2832, 2838, 2869, - 2836, 2840, 71, 2841, 71, 2837, 71, 2842, 71, 2846, - 71, 2843, 71, 71, 2847, 71, 71, 2844, 2852, 71, - 2845, 2849, 2855, 71, 2853, 2850, 2856, 71, 71, 2858, - 71, 2904, 71, 2851, 2857, 2854, 2859, 71, 71, 2861, - 71, 2862, 71, 2860, 2863, 71, 2864, 71, 2865, 71, - 2866, 71, 2867, 71, 2868, 71, 2870, 71, 71, 71, - 71, 71, 71, 2875, 71, 71, 71, 2871, 71, 2879, + 2829, 71, 71, 71, 71, 71, 2828, 2827, 2830, 71, + 2833, 71, 71, 71, 71, 71, 71, 2835, 71, 3093, + 2836, 2834, 2831, 71, 2832, 71, 71, 71, 71, 71, + 71, 2845, 2837, 2846, 2838, 2839, 2840, 2844, 2848, 2841, + 71, 71, 2842, 2843, 71, 2849, 71, 2847, 2867, 2850, + 2852, 71, 2853, 71, 2851, 71, 2855, 71, 2915, 2854, + 2856, 71, 2857, 2858, 71, 71, 2859, 2860, 2863, 71, + 2861, 2862, 71, 71, 71, 2866, 71, 2864, 71, 71, + 71, 71, 71, 2865, 2872, 71, 2871, 71, 71, 71, + 71, 71, 2868, 2875, 2874, 71, 71, 2876, 2954, 2869, - 71, 2872, 71, 2881, 71, 71, 2876, 71, 2877, 2888, - 2873, 2874, 2878, 71, 2882, 71, 2883, 2880, 71, 2885, - 71, 71, 71, 2887, 71, 2886, 71, 2890, 71, 71, - 71, 2884, 71, 71, 2894, 2889, 2897, 71, 71, 2895, - 2899, 71, 71, 2891, 2892, 2893, 71, 2896, 2900, 71, - 2898, 2901, 71, 71, 71, 2903, 71, 71, 71, 71, - 2912, 2902, 2905, 2909, 71, 71, 2910, 2906, 2908, 71, - 71, 2911, 71, 71, 71, 71, 71, 2907, 2913, 71, - 71, 71, 71, 71, 2919, 71, 2916, 2923, 2914, 2918, - 2915, 2920, 2926, 71, 2927, 2924, 71, 2921, 2917, 71, + 2870, 71, 2880, 71, 2879, 2877, 71, 2873, 71, 2878, + 2881, 71, 2882, 71, 71, 71, 2887, 2885, 2883, 2884, + 2886, 2888, 71, 2889, 71, 71, 3093, 71, 71, 71, + 2891, 2890, 2893, 2894, 2896, 71, 2897, 71, 2899, 71, + 2900, 71, 71, 2898, 2895, 2892, 71, 2902, 71, 2903, + 71, 2901, 2904, 71, 2905, 71, 2906, 71, 2907, 71, + 2908, 71, 2909, 71, 2910, 71, 71, 71, 2913, 71, + 71, 71, 2918, 71, 71, 71, 2912, 71, 71, 2914, + 71, 71, 71, 2922, 2924, 71, 71, 71, 2928, 2921, + 2919, 2916, 2911, 2917, 2920, 2923, 2925, 71, 71, 2931, - 2922, 2928, 71, 2925, 71, 2929, 2930, 71, 2931, 71, - 71, 71, 71, 2934, 71, 2932, 2935, 2936, 71, 2933, - 2939, 71, 71, 71, 71, 71, 71, 71, 2942, 2944, - 71, 2947, 71, 2938, 2941, 2940, 71, 71, 71, 2937, - 2945, 2950, 71, 2954, 2943, 71, 2946, 71, 2951, 71, - 2955, 2948, 71, 2952, 71, 2949, 71, 2953, 71, 71, - 2960, 71, 2961, 71, 2959, 71, 2956, 2957, 71, 71, - 71, 71, 71, 71, 2965, 71, 71, 2958, 2967, 71, - 2974, 71, 71, 2964, 71, 2969, 2962, 2972, 2963, 2970, - 71, 2966, 71, 71, 2968, 2973, 2978, 71, 2971, 71, + 71, 2930, 71, 71, 71, 71, 71, 2933, 71, 3093, + 71, 71, 2927, 71, 2932, 2929, 2937, 2938, 2940, 71, + 2936, 71, 2934, 71, 2935, 71, 2939, 2948, 2941, 2943, + 71, 71, 2942, 2944, 71, 2945, 71, 71, 71, 71, + 2947, 71, 71, 71, 2946, 71, 2953, 71, 2956, 71, + 71, 71, 2950, 2952, 71, 71, 71, 2949, 2955, 71, + 71, 71, 2951, 2957, 2958, 2966, 71, 2959, 2963, 71, + 2960, 2962, 2964, 71, 2968, 2967, 2961, 71, 2971, 71, + 71, 71, 2965, 2973, 71, 71, 2974, 2969, 71, 2972, + 2975, 71, 2976, 71, 71, 71, 71, 2970, 2979, 2980, - 71, 2980, 71, 2981, 2975, 2979, 71, 71, 71, 71, - 2976, 2982, 2977, 2983, 2984, 2986, 2987, 71, 2985, 71, - 71, 71, 2989, 71, 2988, 71, 71, 71, 71, 2990, - 2995, 71, 71, 2992, 71, 2998, 71, 2999, 71, 2991, - 71, 71, 71, 71, 71, 2997, 2993, 2994, 3002, 3000, - 2996, 71, 3001, 71, 3006, 71, 3007, 3005, 71, 71, - 3003, 3004, 71, 3010, 71, 3012, 71, 3013, 3008, 71, - 71, 71, 3017, 71, 3014, 71, 71, 3015, 3011, 71, - 3018, 3019, 3020, 71, 3009, 71, 71, 71, 71, 71, - 3016, 71, 3021, 3022, 3024, 3023, 3026, 71, 71, 71, + 2977, 2981, 71, 71, 2984, 71, 71, 71, 2978, 71, + 71, 2987, 71, 2989, 71, 71, 2992, 71, 2983, 2985, + 71, 2986, 2990, 71, 2995, 71, 71, 2982, 71, 2996, + 71, 2999, 2988, 3000, 2991, 2993, 71, 71, 2997, 71, + 71, 2994, 71, 71, 71, 2998, 3005, 71, 3004, 71, + 3001, 3006, 71, 3002, 71, 71, 71, 71, 71, 3010, + 71, 3003, 3012, 71, 71, 3007, 71, 71, 3009, 3008, + 71, 71, 3017, 3014, 71, 3018, 3011, 3013, 71, 3015, + 3019, 71, 3016, 3024, 3020, 3023, 71, 71, 3025, 3021, + 71, 3026, 3027, 3022, 71, 71, 71, 71, 3031, 71, - 71, 71, 3032, 3028, 3029, 71, 3025, 3027, 3033, 71, - 3030, 71, 71, 3036, 3037, 71, 71, 3039, 71, 3031, - 3040, 71, 71, 3038, 3034, 71, 71, 71, 71, 3041, - 3035, 3042, 3043, 3046, 71, 3047, 71, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3044, 3048, 3048, 3045, 43, 43, - 43, 43, 43, 43, 43, 48, 48, 48, 48, 48, - 48, 48, 53, 53, 53, 53, 53, 53, 53, 59, - 59, 59, 59, 59, 59, 59, 64, 64, 64, 64, - 64, 64, 64, 74, 74, 3048, 74, 74, 74, 74, - 141, 141, 3048, 3048, 3048, 141, 141, 143, 143, 3048, + 3028, 3029, 3032, 71, 71, 71, 3034, 71, 71, 71, + 3033, 71, 3035, 71, 71, 3040, 3030, 71, 3036, 71, + 3037, 71, 71, 3043, 3044, 71, 3045, 71, 3038, 3046, + 3039, 71, 3042, 3041, 71, 71, 3047, 71, 3051, 71, + 71, 71, 71, 3055, 3052, 71, 3048, 3093, 3050, 71, + 3057, 71, 3058, 3049, 3053, 71, 71, 71, 3062, 71, + 3059, 3093, 71, 3060, 3056, 71, 3054, 3063, 71, 71, + 3064, 3065, 71, 71, 71, 71, 3061, 71, 3071, 71, + 3066, 3067, 3069, 71, 3068, 71, 71, 71, 3070, 71, + 3073, 3074, 71, 3077, 3072, 3078, 71, 71, 71, 3081, - 3048, 143, 3048, 143, 145, 3048, 3048, 3048, 3048, 3048, - 145, 148, 148, 3048, 3048, 3048, 148, 148, 150, 3048, - 3048, 3048, 3048, 3048, 150, 152, 152, 3048, 152, 152, - 152, 152, 75, 75, 3048, 75, 75, 75, 75, 13, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048 + 3082, 71, 3075, 71, 3084, 71, 3076, 71, 3079, 71, + 3083, 3085, 71, 71, 3086, 71, 3080, 71, 3087, 3093, + 3088, 3091, 71, 3092, 71, 3093, 3093, 3093, 3089, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3090, 43, 43, 43, + 43, 43, 43, 43, 48, 48, 48, 48, 48, 48, + 48, 53, 53, 53, 53, 53, 53, 53, 59, 59, + 59, 59, 59, 59, 59, 64, 64, 64, 64, 64, + 64, 64, 74, 74, 3093, 74, 74, 74, 74, 142, + 142, 3093, 3093, 3093, 142, 142, 144, 144, 3093, 3093, + 144, 3093, 144, 146, 3093, 3093, 3093, 3093, 3093, 146, + + 149, 149, 3093, 3093, 3093, 149, 149, 151, 3093, 3093, + 3093, 3093, 3093, 151, 153, 153, 3093, 153, 153, 153, + 153, 75, 75, 3093, 75, 75, 75, 75, 13, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093 } ; -static const flex_int16_t yy_chk[5981] = +static const flex_int16_t yy_chk[6070] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2095,655 +2121,665 @@ static const flex_int16_t yy_chk[5981] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3054, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3099, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, - 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1005, 24, 24, - 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, - 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, - 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, - 35, 52, 36, 37, 37, 33, 35, 38, 37, 35, - 42, 69, 38, 63, 63, 38, 35, 84, 37, 37, - 40, 37, 38, 80, 40, 69, 38, 38, 39, 39, + 23, 23, 21, 21, 24, 12, 21, 84, 23, 24, + 34, 21, 23, 24, 12, 23, 24, 1016, 24, 24, + 21, 26, 26, 27, 27, 84, 28, 36, 32, 32, + 28, 34, 27, 28, 33, 33, 26, 32, 42, 33, + 28, 36, 28, 32, 37, 37, 127, 32, 52, 37, + 69, 52, 127, 42, 123, 33, 35, 35, 38, 37, + 37, 35, 37, 38, 69, 35, 38, 39, 39, 81, + 39, 35, 40, 38, 35, 80, 40, 38, 38, 39, - 126, 39, 41, 41, 40, 80, 126, 41, 40, 40, - 39, 41, 58, 89, 58, 58, 39, 58, 66, 86, - 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, - 66, 71, 72, 86, 127, 89, 72, 71, 74, 77, - 74, 74, 77, 74, 78, 88, 127, 85, 78, 74, - 74, 82, 83, 87, 82, 83, 85, 92, 93, 87, - 91, 94, 99, 88, 88, 87, 91, 87, 83, 95, - 96, 92, 94, 94, 161, 102, 99, 97, 93, 91, - 94, 97, 161, 105, 98, 106, 101, 95, 96, 98, - 100, 150, 101, 100, 102, 103, 100, 112, 104, 106, + 123, 35, 151, 41, 41, 39, 40, 80, 41, 81, + 40, 40, 41, 58, 77, 58, 58, 77, 58, 63, + 63, 66, 86, 66, 66, 68, 66, 68, 68, 71, + 68, 71, 71, 66, 71, 72, 86, 88, 78, 72, + 71, 74, 78, 74, 74, 82, 74, 83, 82, 85, + 83, 89, 74, 74, 87, 88, 88, 90, 85, 91, + 87, 92, 93, 83, 102, 91, 87, 95, 87, 94, + 97, 96, 98, 89, 97, 92, 90, 98, 91, 99, + 94, 94, 93, 102, 100, 95, 101, 100, 94, 96, + 100, 103, 101, 99, 104, 105, 103, 104, 106, 149, - 103, 104, 105, 109, 107, 104, 108, 105, 107, 100, - 100, 101, 110, 108, 111, 113, 109, 112, 114, 110, - 103, 104, 114, 115, 117, 116, 119, 111, 118, 118, - 116, 122, 120, 113, 116, 121, 120, 123, 132, 125, - 124, 115, 129, 124, 117, 120, 119, 128, 128, 129, - 121, 120, 125, 130, 124, 131, 123, 122, 124, 132, - 129, 133, 134, 135, 134, 128, 136, 137, 128, 130, - 138, 136, 140, 134, 131, 135, 139, 133, 148, 137, - 157, 139, 142, 142, 144, 134, 140, 144, 138, 146, - 154, 146, 146, 154, 146, 149, 149, 151, 157, 151, + 108, 104, 107, 100, 100, 109, 107, 108, 110, 111, + 112, 101, 106, 114, 105, 110, 103, 104, 109, 105, + 113, 115, 111, 116, 113, 115, 118, 117, 119, 119, + 112, 114, 117, 120, 122, 121, 117, 124, 126, 121, + 128, 116, 129, 129, 125, 131, 118, 125, 121, 122, + 130, 126, 128, 120, 121, 132, 124, 130, 125, 133, + 129, 131, 125, 129, 135, 134, 135, 136, 130, 141, + 138, 137, 139, 140, 132, 135, 137, 161, 140, 136, + 133, 134, 138, 141, 143, 143, 145, 135, 161, 145, + 139, 147, 155, 147, 147, 155, 147, 150, 150, 152, - 151, 152, 151, 152, 152, 155, 152, 158, 156, 159, - 155, 162, 163, 152, 156, 160, 164, 159, 165, 166, - 168, 164, 158, 156, 159, 167, 160, 163, 166, 169, - 162, 167, 167, 171, 169, 170, 170, 175, 165, 171, - 173, 172, 179, 172, 173, 168, 172, 174, 174, 173, - 176, 147, 177, 178, 173, 176, 175, 177, 180, 183, - 173, 173, 179, 172, 180, 178, 181, 182, 184, 185, - 181, 186, 182, 183, 187, 188, 192, 190, 191, 187, - 188, 185, 190, 184, 185, 194, 194, 180, 200, 186, - 189, 189, 192, 193, 189, 195, 189, 196, 191, 193, + 158, 152, 152, 153, 152, 153, 153, 156, 153, 159, + 157, 160, 156, 162, 163, 153, 157, 164, 158, 160, + 166, 162, 165, 168, 159, 157, 160, 165, 167, 168, + 168, 169, 164, 163, 170, 171, 171, 167, 172, 170, + 166, 173, 176, 173, 172, 174, 173, 175, 175, 174, + 177, 180, 178, 148, 174, 177, 169, 178, 179, 174, + 182, 176, 181, 173, 182, 174, 174, 183, 181, 184, + 179, 180, 183, 185, 186, 187, 188, 189, 238, 191, + 193, 188, 189, 184, 191, 192, 186, 201, 185, 186, + 218, 181, 238, 187, 190, 190, 193, 194, 190, 198, - 197, 195, 206, 196, 210, 198, 199, 195, 189, 200, - 189, 198, 199, 201, 208, 206, 145, 202, 203, 201, - 197, 199, 202, 204, 203, 205, 210, 207, 212, 204, - 209, 211, 205, 207, 208, 213, 209, 214, 215, 211, - 213, 212, 216, 217, 218, 222, 214, 219, 220, 218, - 218, 221, 219, 215, 223, 221, 224, 226, 216, 225, - 223, 229, 233, 217, 227, 225, 220, 222, 228, 227, - 228, 230, 235, 231, 224, 224, 232, 226, 230, 231, - 229, 233, 232, 234, 235, 236, 237, 237, 239, 234, - 238, 238, 240, 242, 239, 241, 243, 241, 240, 236, + 190, 195, 195, 194, 196, 192, 218, 197, 201, 199, + 196, 200, 190, 197, 190, 199, 196, 200, 202, 198, + 203, 204, 205, 206, 202, 203, 200, 204, 205, 207, + 206, 208, 209, 210, 211, 207, 212, 213, 209, 214, + 211, 215, 216, 219, 208, 213, 215, 217, 222, 220, + 224, 216, 214, 210, 220, 220, 221, 226, 212, 225, + 223, 221, 217, 219, 223, 225, 222, 227, 228, 229, + 231, 232, 224, 227, 229, 226, 226, 230, 232, 230, + 233, 234, 235, 237, 236, 244, 233, 234, 228, 231, + 236, 239, 239, 240, 240, 237, 241, 242, 243, 245, - 245, 243, 246, 244, 247, 249, 248, 250, 143, 260, - 246, 248, 239, 250, 241, 244, 242, 251, 256, 245, - 252, 253, 255, 251, 247, 252, 253, 254, 249, 257, - 258, 259, 256, 254, 260, 261, 263, 255, 263, 259, - 262, 261, 266, 262, 258, 264, 264, 257, 265, 267, - 267, 265, 268, 268, 269, 271, 270, 272, 271, 273, - 266, 272, 275, 274, 283, 277, 276, 277, 273, 274, - 269, 270, 276, 278, 279, 284, 275, 281, 279, 278, - 280, 280, 281, 282, 283, 285, 286, 287, 287, 282, - 289, 288, 290, 284, 288, 279, 290, 291, 296, 286, + 243, 235, 241, 242, 245, 247, 246, 248, 244, 249, + 251, 250, 146, 252, 262, 248, 250, 243, 246, 252, + 241, 253, 257, 254, 247, 255, 256, 253, 254, 249, + 255, 258, 256, 251, 259, 260, 261, 257, 264, 262, + 263, 264, 266, 266, 261, 258, 263, 268, 265, 260, + 265, 267, 259, 271, 267, 269, 269, 270, 270, 272, + 273, 275, 274, 273, 277, 268, 274, 276, 281, 271, + 275, 278, 281, 276, 272, 283, 280, 278, 277, 279, + 283, 279, 280, 282, 282, 284, 285, 286, 287, 281, + 288, 284, 289, 289, 290, 291, 292, 290, 293, 144, - 292, 293, 293, 294, 295, 297, 285, 295, 289, 298, - 296, 297, 298, 299, 301, 302, 291, 303, 292, 315, - 315, 294, 303, 301, 295, 299, 300, 304, 305, 306, - 304, 305, 304, 302, 309, 300, 141, 307, 300, 309, - 309, 311, 306, 300, 300, 300, 300, 312, 304, 307, - 308, 310, 308, 308, 310, 313, 314, 318, 311, 317, - 317, 311, 312, 316, 313, 314, 319, 320, 316, 321, - 322, 319, 318, 327, 323, 324, 336, 336, 329, 320, - 70, 324, 325, 325, 329, 325, 328, 330, 321, 323, - 322, 328, 330, 327, 325, 331, 332, 333, 335, 332, + 292, 294, 296, 288, 298, 286, 285, 295, 295, 287, + 301, 297, 299, 291, 297, 304, 298, 293, 299, 294, + 296, 300, 301, 305, 300, 303, 307, 309, 305, 307, + 308, 297, 302, 304, 303, 306, 318, 318, 306, 309, + 306, 302, 142, 308, 302, 310, 313, 310, 310, 302, + 302, 302, 302, 311, 312, 314, 306, 312, 311, 311, + 315, 321, 316, 313, 317, 324, 313, 319, 320, 320, + 314, 316, 319, 317, 322, 323, 321, 315, 315, 322, + 325, 326, 327, 330, 324, 338, 331, 323, 327, 328, + 328, 331, 328, 332, 338, 70, 326, 333, 336, 332, - 331, 332, 334, 337, 342, 334, 331, 335, 346, 337, - 339, 333, 338, 338, 343, 339, 340, 344, 334, 340, - 349, 334, 346, 334, 342, 340, 568, 345, 348, 340, - 351, 348, 344, 568, 349, 343, 356, 340, 341, 341, - 352, 341, 345, 357, 354, 351, 353, 348, 355, 352, - 354, 353, 353, 361, 341, 356, 359, 341, 357, 341, - 360, 341, 350, 358, 350, 350, 360, 362, 363, 355, - 365, 366, 358, 368, 350, 359, 350, 350, 350, 361, - 364, 350, 363, 367, 369, 370, 364, 362, 368, 369, - 364, 366, 371, 365, 372, 372, 373, 374, 371, 375, + 325, 328, 333, 330, 334, 335, 339, 339, 335, 334, + 335, 337, 336, 340, 337, 334, 341, 341, 342, 340, + 345, 346, 343, 342, 347, 343, 348, 337, 358, 64, + 337, 343, 337, 351, 349, 343, 351, 352, 354, 347, + 345, 348, 346, 343, 344, 344, 355, 344, 349, 358, + 359, 352, 351, 354, 362, 355, 356, 360, 357, 433, + 344, 356, 356, 344, 357, 344, 361, 344, 353, 359, + 353, 353, 360, 362, 364, 361, 365, 366, 368, 363, + 353, 433, 353, 353, 353, 363, 369, 353, 367, 370, + 371, 366, 372, 373, 367, 376, 365, 372, 367, 377, - 370, 376, 377, 367, 378, 379, 381, 376, 382, 374, - 379, 380, 380, 375, 380, 383, 373, 385, 384, 385, - 378, 386, 388, 388, 382, 386, 381, 377, 389, 387, - 390, 383, 384, 387, 391, 392, 396, 385, 393, 397, - 394, 396, 395, 397, 400, 390, 398, 389, 387, 394, - 391, 395, 393, 392, 405, 398, 403, 399, 401, 403, - 394, 64, 394, 399, 401, 400, 402, 404, 406, 406, - 402, 407, 404, 409, 405, 408, 408, 410, 409, 411, - 411, 412, 413, 414, 407, 415, 413, 412, 416, 417, - 410, 418, 418, 416, 417, 419, 420, 421, 414, 422, + 364, 368, 375, 375, 374, 371, 369, 378, 373, 370, + 374, 377, 379, 380, 381, 376, 384, 382, 379, 385, + 387, 378, 382, 383, 383, 386, 383, 388, 389, 388, + 381, 392, 389, 390, 387, 385, 384, 390, 380, 391, + 391, 386, 393, 394, 395, 397, 396, 388, 399, 398, + 392, 400, 390, 399, 397, 400, 403, 393, 398, 394, + 396, 401, 395, 402, 405, 397, 404, 397, 405, 402, + 401, 406, 404, 407, 406, 408, 410, 403, 407, 409, + 409, 411, 411, 412, 413, 414, 414, 415, 412, 410, + 416, 417, 418, 415, 416, 408, 419, 413, 420, 421, - 418, 423, 425, 427, 423, 424, 415, 419, 427, 424, - 428, 422, 426, 426, 425, 421, 420, 429, 429, 430, - 432, 432, 433, 437, 434, 435, 436, 439, 440, 443, - 441, 428, 434, 442, 435, 437, 444, 446, 443, 442, - 452, 430, 444, 433, 441, 439, 436, 439, 440, 445, - 447, 446, 448, 449, 445, 448, 450, 451, 447, 453, - 452, 447, 453, 451, 454, 455, 458, 449, 456, 457, - 454, 450, 459, 456, 461, 460, 459, 462, 463, 455, - 460, 464, 462, 465, 468, 484, 484, 458, 454, 461, - 469, 457, 471, 470, 463, 473, 465, 470, 472, 473, + 421, 419, 422, 420, 423, 424, 417, 425, 421, 426, + 428, 427, 426, 418, 422, 427, 429, 429, 431, 425, + 430, 436, 428, 424, 423, 430, 432, 432, 435, 435, + 437, 438, 439, 442, 441, 446, 440, 444, 437, 431, + 438, 440, 436, 445, 447, 442, 449, 448, 451, 446, + 447, 457, 449, 439, 441, 444, 448, 444, 452, 450, + 454, 455, 451, 445, 450, 453, 452, 456, 453, 452, + 460, 457, 458, 456, 454, 458, 455, 459, 462, 466, + 461, 463, 464, 459, 460, 461, 464, 465, 467, 468, + 469, 470, 465, 467, 466, 473, 511, 474, 476, 475, - 464, 466, 466, 474, 468, 469, 477, 466, 474, 466, - 475, 471, 474, 476, 472, 466, 480, 466, 476, 478, - 466, 466, 477, 479, 482, 475, 483, 466, 478, 479, - 481, 485, 480, 481, 479, 486, 486, 487, 488, 489, - 490, 491, 493, 492, 59, 494, 483, 482, 492, 496, - 488, 493, 487, 495, 489, 496, 485, 498, 499, 490, - 501, 500, 499, 491, 494, 502, 498, 500, 495, 503, - 504, 505, 501, 506, 507, 509, 508, 509, 507, 510, - 502, 511, 511, 513, 504, 515, 505, 510, 503, 508, - 512, 506, 514, 517, 518, 513, 512, 515, 514, 516, + 462, 459, 463, 475, 470, 468, 477, 59, 481, 469, + 471, 471, 474, 481, 511, 473, 471, 476, 471, 478, + 480, 484, 477, 478, 471, 482, 471, 484, 479, 471, + 471, 483, 484, 479, 485, 480, 471, 479, 487, 486, + 483, 482, 486, 488, 489, 489, 490, 491, 491, 492, + 485, 494, 496, 493, 495, 497, 499, 500, 498, 54, + 497, 487, 501, 488, 492, 493, 494, 498, 501, 503, + 506, 490, 500, 495, 496, 499, 504, 505, 503, 507, + 504, 508, 506, 505, 509, 512, 510, 515, 53, 512, + 513, 514, 518, 514, 507, 515, 516, 516, 509, 517, - 519, 520, 516, 521, 520, 519, 533, 517, 522, 518, - 523, 533, 521, 524, 531, 523, 523, 525, 525, 521, - 526, 526, 521, 527, 522, 534, 524, 528, 528, 527, - 529, 529, 530, 532, 535, 531, 532, 536, 530, 538, - 536, 537, 535, 540, 534, 539, 537, 540, 541, 542, - 543, 544, 545, 542, 541, 546, 544, 548, 547, 550, - 54, 546, 538, 547, 539, 552, 549, 556, 543, 549, - 553, 548, 545, 557, 549, 551, 551, 550, 549, 554, - 555, 556, 560, 552, 554, 555, 553, 559, 557, 561, - 562, 560, 561, 559, 562, 563, 564, 565, 566, 564, + 508, 510, 519, 513, 518, 517, 520, 521, 519, 522, + 521, 523, 524, 525, 527, 526, 525, 524, 520, 529, + 530, 530, 528, 522, 526, 536, 523, 528, 528, 543, + 527, 526, 529, 532, 526, 531, 531, 533, 533, 532, + 534, 534, 535, 539, 537, 538, 536, 537, 535, 540, + 538, 541, 543, 542, 541, 544, 545, 540, 542, 546, + 545, 548, 539, 547, 549, 546, 550, 547, 552, 549, + 551, 553, 554, 552, 544, 554, 551, 555, 557, 548, + 554, 556, 556, 558, 554, 553, 550, 559, 560, 561, + 562, 564, 559, 560, 48, 555, 557, 564, 565, 558, - 563, 567, 565, 570, 569, 571, 572, 572, 570, 573, - 574, 575, 576, 584, 566, 53, 562, 569, 573, 567, - 577, 576, 578, 580, 579, 571, 580, 575, 578, 574, - 579, 584, 577, 581, 581, 582, 581, 583, 582, 585, - 586, 588, 583, 587, 594, 590, 586, 588, 587, 589, - 590, 591, 589, 585, 592, 593, 591, 591, 596, 595, - 597, 598, 599, 594, 594, 595, 598, 592, 593, 597, - 600, 600, 601, 602, 603, 604, 602, 596, 605, 601, - 603, 608, 599, 605, 606, 607, 607, 604, 610, 606, - 606, 602, 609, 611, 609, 611, 612, 613, 614, 615, + 571, 566, 567, 561, 566, 562, 567, 565, 568, 569, + 570, 572, 569, 568, 573, 570, 571, 574, 575, 576, + 580, 573, 578, 575, 577, 577, 579, 583, 567, 572, + 574, 578, 581, 583, 582, 585, 580, 584, 585, 576, + 589, 581, 592, 584, 43, 579, 582, 586, 586, 587, + 586, 588, 587, 590, 591, 594, 588, 593, 589, 591, + 594, 592, 595, 593, 601, 597, 596, 590, 595, 596, + 597, 598, 599, 600, 602, 603, 598, 598, 604, 606, + 602, 607, 607, 601, 601, 599, 600, 604, 605, 608, + 611, 610, 609, 605, 603, 609, 608, 610, 612, 606, - 616, 618, 617, 619, 620, 618, 608, 610, 617, 621, - 622, 623, 619, 624, 612, 613, 614, 625, 615, 620, - 616, 626, 627, 628, 621, 624, 629, 626, 622, 630, - 623, 632, 625, 631, 633, 628, 627, 631, 634, 635, - 636, 637, 638, 638, 640, 629, 642, 639, 630, 632, - 633, 639, 644, 641, 645, 637, 634, 635, 635, 636, - 642, 643, 646, 640, 641, 647, 643, 652, 644, 648, - 649, 650, 647, 645, 648, 646, 650, 649, 651, 653, - 654, 655, 656, 651, 657, 652, 653, 658, 661, 654, - 659, 656, 658, 659, 660, 655, 657, 662, 660, 663, + 613, 615, 611, 612, 617, 613, 613, 614, 614, 616, + 609, 616, 618, 619, 618, 620, 621, 622, 623, 624, + 625, 626, 627, 617, 625, 624, 615, 628, 629, 630, + 626, 619, 631, 620, 621, 632, 622, 627, 623, 633, + 634, 635, 628, 636, 631, 633, 629, 637, 630, 639, + 632, 638, 640, 635, 634, 638, 641, 642, 643, 644, + 645, 645, 636, 647, 649, 646, 637, 639, 640, 646, + 648, 651, 652, 644, 641, 642, 642, 643, 649, 650, + 653, 648, 647, 654, 650, 656, 659, 651, 661, 655, + 654, 652, 656, 653, 655, 657, 658, 661, 660, 662, - 665, 664, 661, 666, 666, 671, 662, 667, 667, 668, - 668, 669, 672, 673, 663, 664, 667, 675, 672, 674, - 669, 665, 676, 674, 671, 677, 678, 679, 681, 675, - 680, 682, 678, 673, 683, 679, 686, 680, 689, 692, - 48, 695, 694, 677, 693, 695, 681, 676, 692, 699, - 693, 686, 696, 696, 683, 689, 682, 684, 694, 697, - 697, 698, 684, 701, 700, 702, 684, 699, 704, 684, - 773, 702, 698, 704, 705, 706, 684, 684, 700, 684, - 707, 709, 709, 701, 703, 703, 703, 708, 703, 712, - 708, 703, 710, 706, 773, 705, 703, 711, 711, 710, + 657, 658, 663, 664, 659, 660, 666, 665, 668, 666, + 667, 663, 665, 662, 667, 664, 669, 670, 672, 671, + 673, 673, 668, 675, 675, 669, 674, 674, 676, 678, + 679, 680, 670, 671, 681, 674, 679, 676, 681, 672, + 682, 683, 684, 685, 688, 686, 689, 687, 678, 685, + 690, 680, 682, 686, 687, 699, 711, 696, 693, 700, + 684, 711, 688, 701, 699, 700, 683, 703, 703, 706, + 690, 689, 691, 693, 696, 705, 702, 691, 708, 701, + 702, 691, 704, 704, 691, 707, 705, 706, 712, 709, + 713, 691, 691, 726, 691, 709, 714, 14, 708, 707, - 713, 713, 703, 703, 712, 707, 714, 715, 716, 719, - 715, 714, 720, 716, 717, 717, 718, 722, 718, 721, - 723, 719, 724, 721, 725, 725, 726, 729, 727, 731, - 724, 720, 728, 728, 730, 733, 750, 722, 732, 723, - 733, 726, 727, 750, 732, 729, 730, 734, 734, 735, - 738, 731, 737, 739, 735, 735, 738, 737, 740, 739, - 741, 742, 743, 740, 742, 744, 741, 747, 743, 745, - 745, 746, 746, 744, 748, 747, 749, 751, 752, 752, - 753, 749, 754, 756, 758, 755, 759, 765, 761, 753, - 754, 755, 748, 758, 760, 759, 751, 761, 762, 760, + 710, 710, 710, 715, 710, 726, 715, 710, 713, 712, + 716, 716, 710, 717, 718, 718, 719, 727, 710, 710, + 717, 714, 720, 720, 721, 722, 728, 723, 722, 721, + 728, 719, 723, 724, 724, 725, 727, 725, 729, 731, + 730, 732, 732, 734, 736, 733, 738, 731, 735, 735, + 739, 737, 741, 741, 752, 752, 739, 734, 729, 730, + 733, 740, 736, 737, 742, 745, 740, 744, 738, 742, + 742, 745, 744, 746, 749, 747, 748, 749, 750, 746, + 747, 751, 748, 754, 750, 753, 753, 755, 756, 751, + 757, 754, 758, 756, 760, 759, 763, 757, 761, 761, - 763, 762, 756, 764, 766, 763, 767, 769, 769, 768, - 770, 771, 765, 766, 768, 768, 778, 764, 772, 767, - 774, 779, 776, 774, 776, 770, 779, 772, 777, 777, - 771, 774, 780, 785, 781, 782, 783, 778, 786, 784, - 787, 789, 785, 790, 787, 788, 793, 791, 43, 790, - 792, 795, 794, 780, 781, 782, 791, 795, 783, 784, - 789, 786, 792, 788, 796, 793, 794, 797, 798, 798, - 799, 800, 797, 801, 802, 803, 804, 805, 796, 806, - 800, 807, 802, 808, 810, 809, 811, 807, 812, 814, - 799, 809, 811, 801, 812, 803, 805, 808, 804, 806, + 762, 764, 765, 767, 763, 755, 768, 764, 770, 762, + 758, 759, 767, 760, 769, 768, 773, 770, 774, 769, + 771, 765, 772, 771, 775, 776, 777, 772, 778, 778, + 773, 777, 777, 775, 779, 780, 781, 782, 776, 783, + 786, 786, 783, 774, 785, 781, 785, 787, 788, 779, + 783, 789, 792, 788, 780, 790, 791, 793, 794, 795, + 796, 782, 797, 799, 796, 798, 801, 794, 787, 799, + 800, 802, 789, 803, 792, 790, 791, 793, 801, 800, + 797, 805, 795, 804, 798, 808, 806, 803, 809, 804, + 802, 806, 807, 807, 810, 805, 811, 809, 812, 813, - 815, 813, 816, 817, 810, 813, 822, 816, 814, 818, - 818, 819, 815, 820, 821, 823, 820, 819, 824, 822, - 815, 823, 825, 825, 817, 826, 827, 828, 828, 829, - 830, 827, 821, 832, 830, 831, 831, 833, 824, 835, - 834, 837, 838, 826, 829, 834, 840, 841, 843, 843, - 844, 847, 845, 879, 844, 832, 838, 833, 835, 846, - 846, 879, 849, 866, 866, 837, 840, 845, 841, 842, - 850, 848, 842, 852, 842, 848, 847, 849, 842, 854, - 842, 851, 856, 853, 850, 842, 851, 852, 853, 853, - 842, 855, 858, 854, 857, 855, 859, 856, 860, 857, + 814, 816, 815, 817, 811, 808, 818, 816, 819, 820, + 821, 823, 818, 824, 810, 820, 821, 817, 812, 814, + 822, 813, 815, 826, 822, 824, 825, 830, 819, 831, + 823, 825, 828, 824, 827, 827, 829, 832, 828, 829, + 833, 835, 831, 832, 826, 830, 834, 834, 836, 837, + 837, 838, 839, 836, 840, 840, 839, 841, 842, 835, + 833, 844, 843, 846, 849, 850, 838, 843, 847, 852, + 852, 853, 855, 855, 854, 853, 856, 857, 842, 841, + 844, 857, 847, 858, 849, 860, 850, 846, 851, 854, + 860, 851, 859, 851, 861, 875, 875, 851, 858, 851, - 861, 859, 862, 869, 858, 863, 871, 855, 864, 857, - 867, 863, 860, 865, 864, 867, 862, 868, 870, 865, - 873, 861, 874, 868, 871, 869, 875, 874, 878, 876, - 877, 877, 873, 878, 880, 881, 882, 870, 872, 872, - 875, 876, 883, 883, 872, 884, 872, 886, 880, 884, - 888, 892, 872, 886, 881, 882, 887, 872, 872, 887, - 889, 890, 894, 891, 872, 895, 896, 890, 891, 888, - 892, 894, 897, 889, 895, 898, 899, 901, 897, 902, - 900, 903, 896, 905, 898, 900, 904, 906, 907, 908, - 913, 911, 905, 902, 907, 899, 906, 901, 904, 909, + 863, 856, 865, 864, 851, 862, 859, 864, 861, 851, + 862, 862, 867, 866, 863, 868, 869, 865, 866, 864, + 868, 870, 871, 872, 867, 873, 874, 878, 866, 872, + 869, 873, 874, 876, 877, 879, 871, 880, 876, 882, + 877, 883, 870, 887, 884, 13, 883, 885, 887, 878, + 890, 882, 886, 886, 879, 880, 881, 881, 884, 885, + 888, 891, 881, 889, 881, 892, 892, 893, 888, 890, + 881, 893, 895, 897, 898, 881, 881, 889, 895, 899, + 891, 896, 881, 900, 896, 899, 901, 898, 900, 903, + 904, 905, 897, 907, 906, 908, 909, 910, 903, 904, - 914, 903, 915, 916, 913, 909, 908, 911, 917, 918, - 919, 920, 14, 923, 924, 919, 920, 916, 923, 926, - 914, 915, 927, 924, 918, 926, 917, 925, 925, 929, - 932, 930, 933, 932, 934, 927, 930, 930, 931, 931, - 935, 938, 931, 936, 937, 929, 933, 938, 939, 940, - 941, 946, 942, 943, 934, 940, 936, 942, 935, 937, - 945, 947, 949, 945, 948, 941, 947, 943, 939, 948, - 950, 951, 946, 952, 954, 950, 951, 955, 949, 960, - 954, 956, 957, 958, 958, 952, 959, 956, 957, 961, - 962, 962, 961, 955, 963, 959, 964, 960, 965, 966, + 906, 909, 907, 912, 911, 901, 914, 905, 913, 917, + 915, 922, 920, 923, 908, 914, 916, 910, 911, 915, + 913, 918, 916, 912, 924, 922, 917, 918, 920, 926, + 925, 927, 928, 923, 929, 932, 933, 928, 937, 929, + 932, 934, 934, 924, 925, 933, 927, 926, 935, 936, + 938, 940, 944, 937, 935, 941, 943, 945, 936, 943, + 941, 941, 946, 938, 942, 942, 944, 940, 942, 947, + 948, 950, 949, 951, 952, 957, 953, 945, 949, 951, + 946, 953, 947, 954, 956, 948, 960, 956, 958, 952, + 959, 950, 963, 958, 961, 959, 957, 954, 962, 961, - 967, 968, 966, 969, 976, 970, 971, 968, 975, 969, - 970, 971, 963, 967, 972, 964, 973, 977, 965, 972, - 978, 980, 973, 977, 976, 978, 975, 979, 979, 981, - 980, 982, 983, 984, 985, 983, 984, 986, 981, 987, - 988, 989, 990, 991, 994, 985, 995, 989, 990, 982, - 996, 987, 992, 993, 993, 986, 998, 992, 991, 988, - 995, 997, 996, 994, 999, 997, 1000, 1001, 1003, 1004, - 1004, 1008, 1006, 999, 998, 1007, 1009, 1011, 1011, 1010, - 1012, 1009, 1016, 1008, 1016, 1000, 1006, 1003, 1010, 1013, - 1007, 1014, 1001, 1015, 1017, 1013, 1018, 1014, 1015, 1017, + 965, 966, 960, 962, 963, 967, 965, 968, 969, 969, + 970, 967, 971, 968, 974, 972, 975, 966, 972, 970, + 973, 973, 976, 977, 978, 979, 977, 980, 986, 981, + 971, 979, 974, 980, 981, 975, 982, 978, 983, 984, + 987, 982, 976, 983, 988, 984, 986, 989, 990, 990, + 988, 993, 989, 991, 992, 994, 995, 996, 994, 995, + 987, 997, 991, 992, 998, 999, 1000, 1001, 996, 993, + 1002, 1005, 1000, 1001, 1006, 1003, 998, 1004, 1004, 997, + 1003, 1007, 1008, 1009, 999, 1002, 1008, 1010, 1006, 1011, + 1005, 1012, 1014, 1007, 1015, 1015, 1010, 1019, 1017, 1018, - 1012, 1019, 1020, 1021, 1022, 1023, 1024, 1020, 1025, 1030, - 1018, 1028, 1023, 1027, 1027, 1019, 1029, 1032, 1021, 1040, - 1031, 1024, 1040, 1022, 1030, 1028, 1031, 1025, 1033, 1035, - 1035, 1036, 1039, 1033, 1029, 1041, 1036, 1032, 1037, 1037, - 1042, 1038, 1033, 1043, 1033, 1044, 1039, 1033, 1038, 1045, - 1044, 1046, 1043, 1047, 1041, 1048, 1046, 1051, 1042, 1050, - 1050, 1052, 1051, 1053, 1047, 1054, 1052, 1055, 1045, 1056, - 1054, 1055, 1057, 1058, 1048, 1059, 1061, 1060, 1056, 1062, - 1063, 1064, 1065, 1053, 1066, 1069, 1062, 1057, 1058, 1060, - 1067, 1061, 1063, 1068, 1059, 1070, 1067, 1071, 1073, 1074, + 1020, 1009, 1022, 1022, 1021, 1020, 1023, 1051, 1011, 1019, + 1051, 1014, 1017, 1021, 1018, 1024, 1012, 1025, 1027, 1026, + 1027, 1024, 1028, 1025, 1026, 1029, 1023, 1028, 1030, 1031, + 1032, 1033, 1035, 1034, 1031, 1036, 1038, 1038, 1039, 1029, + 1034, 1040, 1030, 1041, 1043, 1032, 1044, 1035, 1047, 1042, + 1033, 1044, 1039, 1047, 1036, 1042, 1046, 1046, 1041, 1040, + 1044, 1049, 1044, 1050, 1043, 1044, 1048, 1048, 1049, 1052, + 1054, 1053, 1056, 1055, 1058, 1057, 1059, 1050, 1055, 1054, + 1057, 1061, 1061, 1064, 0, 1058, 1066, 1062, 1052, 1053, + 1066, 1056, 1062, 1063, 1065, 1059, 1067, 1068, 1063, 1065, - 1064, 1075, 1066, 1065, 1073, 1069, 1071, 1076, 1068, 1075, - 1078, 1077, 1079, 1074, 1080, 1070, 1077, 1079, 1079, 1082, - 1081, 1086, 1078, 1083, 1083, 1085, 13, 1076, 1088, 1088, - 1086, 1087, 1082, 1080, 1081, 1084, 1089, 1087, 1085, 1091, - 1084, 1089, 1090, 1084, 1084, 1091, 1095, 1092, 1084, 1098, - 1093, 1090, 1092, 1099, 1084, 1093, 1094, 1094, 1084, 1096, - 1096, 1097, 1101, 1100, 1097, 1102, 1097, 1095, 1104, 1098, - 1102, 1099, 1100, 1103, 1105, 1106, 1109, 1139, 1107, 1139, - 1105, 1106, 1101, 1107, 1108, 1109, 1104, 1103, 1108, 1116, - 1109, 1114, 1109, 1112, 1109, 1114, 1109, 1110, 1110, 1111, + 1069, 1070, 1071, 1064, 1072, 1067, 1073, 1075, 1076, 1074, + 1077, 1078, 1068, 1073, 1071, 1069, 1079, 1078, 1080, 1072, + 1070, 1074, 1081, 1082, 1084, 1085, 1075, 1086, 1077, 1076, + 1084, 1079, 1082, 1087, 1089, 1086, 1088, 1091, 1080, 1085, + 1092, 1088, 1081, 1090, 1093, 1818, 1089, 1096, 1090, 1090, + 1094, 1094, 1097, 1087, 1092, 1101, 1091, 1093, 1095, 1098, + 1096, 1097, 1818, 1095, 1101, 1098, 1095, 1095, 1099, 1099, + 1100, 1095, 1102, 1106, 1103, 1100, 1109, 1095, 1102, 1103, + 1104, 1095, 1105, 1105, 1110, 1104, 1107, 1107, 1108, 1111, + 1112, 1108, 1113, 1108, 1106, 1114, 1109, 1113, 1111, 1115, - 1111, 1115, 1111, 1117, 1112, 1118, 1119, 1116, 1120, 1121, - 1118, 1118, 1117, 1120, 1123, 1122, 1115, 1124, 1125, 1126, - 1127, 1127, 1128, 1121, 1122, 1126, 1129, 1131, 1119, 1130, - 1128, 1133, 1125, 1123, 1130, 1132, 1124, 1134, 1135, 1137, - 1129, 1131, 1143, 1135, 1132, 1136, 1136, 1138, 1138, 1133, - 1141, 1142, 1146, 1141, 1137, 1144, 1142, 1145, 1145, 1147, - 1147, 1143, 1134, 1149, 1144, 1148, 1148, 1150, 1149, 1151, - 1152, 1152, 1146, 1153, 1154, 1155, 1156, 1154, 1157, 1159, - 1158, 1156, 1158, 1161, 1162, 0, 1161, 1157, 1150, 1163, - 1151, 1164, 1165, 1153, 1163, 1155, 1164, 1159, 1166, 1162, + 1116, 1117, 1110, 1118, 1120, 1125, 1116, 1117, 1118, 1114, + 1112, 1119, 1122, 1120, 1121, 1119, 1125, 1115, 1120, 1121, + 1120, 1127, 1120, 1128, 1120, 1127, 1122, 1123, 1123, 1124, + 1124, 1129, 1124, 1130, 1131, 1132, 1133, 1134, 1128, 1131, + 1131, 1133, 1130, 1135, 1136, 1137, 1138, 1139, 1141, 1129, + 1146, 1134, 1135, 1139, 1140, 1140, 1141, 1132, 1142, 1144, + 1138, 1143, 1145, 1136, 1137, 1147, 1143, 1150, 1146, 1148, + 0, 1145, 1142, 1144, 1148, 1149, 1149, 1151, 1151, 1152, + 1154, 1152, 1150, 1154, 1155, 1156, 1157, 1158, 1158, 1155, + 1147, 1159, 1160, 1160, 1162, 1157, 1161, 1161, 1163, 1162, - 1165, 1167, 1169, 1166, 1168, 1168, 1167, 1169, 1170, 1171, - 1172, 1173, 1175, 1176, 1178, 1171, 1177, 1172, 1175, 1176, - 1178, 1177, 1179, 1180, 1173, 1181, 1170, 1182, 1182, 1183, - 1185, 1179, 1186, 1187, 1188, 1189, 1181, 1191, 1192, 1187, - 1188, 1189, 1180, 1191, 1193, 1194, 1195, 1196, 1198, 1183, - 1185, 1199, 1192, 1197, 1197, 1186, 1200, 1194, 1192, 1203, - 1195, 1201, 1202, 1202, 1193, 1196, 1201, 1204, 1198, 1206, - 0, 1208, 1204, 1207, 1200, 1209, 1199, 1210, 1207, 1207, - 1211, 1212, 1203, 1213, 1209, 1210, 1216, 1214, 1206, 1208, - 1222, 1215, 1214, 1215, 1211, 1214, 1212, 1218, 1213, 1220, + 1164, 1165, 1165, 1166, 1156, 1167, 1168, 1169, 1167, 1170, + 1172, 1159, 1169, 1171, 1174, 1171, 1175, 1174, 1170, 1163, + 1176, 1164, 1177, 1166, 1178, 1176, 1168, 1177, 1172, 1179, + 1180, 1175, 1178, 1182, 1179, 1180, 1181, 1181, 1182, 1183, + 1184, 1185, 1186, 1188, 1189, 1191, 1184, 1190, 1185, 1188, + 1189, 1191, 1190, 1192, 1193, 1186, 1194, 1183, 1195, 1195, + 1196, 1198, 1192, 1199, 1200, 1201, 1202, 1194, 1204, 1205, + 1200, 1201, 1202, 1193, 1204, 1206, 1207, 1208, 1209, 1211, + 1196, 1198, 1212, 1205, 1210, 1210, 1199, 1213, 1207, 1205, + 1216, 1208, 1214, 1215, 1215, 1206, 1209, 1214, 1217, 1211, - 1216, 1213, 1219, 1218, 1223, 1224, 1219, 1221, 1226, 1222, - 1220, 1225, 1221, 1221, 1227, 1228, 1225, 1230, 1231, 1227, - 1232, 1233, 1233, 1224, 1234, 1235, 1226, 1236, 1234, 1238, - 1223, 1230, 1239, 1237, 1240, 1228, 1231, 1241, 1232, 1237, - 1242, 1238, 1243, 1235, 1244, 1246, 1236, 1245, 1240, 1244, - 1246, 1239, 1241, 1247, 1245, 1242, 1248, 1249, 1249, 1250, - 1251, 1243, 1252, 1253, 1254, 1248, 1251, 1255, 1253, 1262, - 1254, 1247, 1263, 1255, 1250, 1256, 1256, 1257, 1257, 1259, - 1259, 1260, 1261, 1252, 1264, 1260, 1263, 1262, 1265, 1266, - 1266, 1261, 1267, 1268, 1270, 1265, 1271, 1269, 1272, 1264, + 1219, 0, 1221, 1217, 1220, 1213, 1222, 1212, 1223, 1220, + 1220, 1224, 1225, 1216, 1226, 1222, 1223, 1229, 1227, 1219, + 1221, 1235, 1228, 1227, 1228, 1224, 1227, 1225, 1231, 1226, + 1233, 1229, 1226, 1232, 1231, 1236, 1237, 1232, 1234, 1239, + 1235, 1233, 1238, 1234, 1234, 1240, 1241, 1238, 1243, 1244, + 1240, 1245, 1246, 1246, 1237, 1247, 1248, 1239, 1249, 1247, + 1251, 1236, 1243, 1252, 1250, 1253, 1241, 1244, 1254, 1245, + 1250, 1255, 1251, 1256, 1248, 1257, 1259, 1249, 1258, 1253, + 1257, 1259, 1252, 1254, 1260, 1258, 1255, 1261, 1262, 1262, + 1263, 1264, 1256, 1265, 1266, 1267, 1261, 1264, 1268, 1266, - 1273, 1268, 1269, 1272, 1272, 1273, 1273, 1274, 1270, 1275, - 1275, 1276, 1267, 1277, 1278, 1271, 1279, 1280, 1281, 1282, - 1283, 1279, 1285, 1278, 1284, 1286, 1283, 1274, 1287, 1284, - 1276, 1286, 1277, 1288, 1289, 1290, 1280, 1282, 1281, 1288, - 1289, 1291, 1292, 1293, 1294, 1295, 0, 1287, 1285, 1296, - 1297, 1297, 1298, 1299, 1290, 1298, 1300, 1300, 1294, 1303, - 1291, 1292, 1293, 1303, 1296, 1299, 1295, 1301, 1301, 1302, - 1304, 1305, 1306, 1307, 1302, 1307, 1309, 1311, 1310, 1307, - 1305, 1309, 1312, 1304, 1314, 1306, 1313, 1313, 1315, 1314, - 1316, 1317, 1307, 1310, 1315, 1318, 1321, 1311, 1312, 1319, + 1275, 1267, 1260, 1276, 1268, 1263, 1269, 1269, 1270, 1270, + 1272, 1272, 1273, 1274, 1265, 1277, 1273, 1276, 1275, 1278, + 1279, 1279, 1274, 1280, 1281, 1283, 1278, 1284, 1282, 1285, + 1277, 1286, 1281, 1282, 1285, 1285, 1286, 1286, 1287, 1283, + 1288, 1288, 1289, 1280, 1290, 1291, 1284, 1292, 1293, 1294, + 1295, 1296, 1292, 1298, 1291, 1297, 1299, 1296, 1287, 1300, + 1297, 1289, 1299, 1290, 1301, 1302, 1303, 1293, 1295, 1294, + 1301, 1302, 1304, 1305, 1306, 1307, 1308, 1312, 1300, 1298, + 1309, 1310, 1310, 1311, 1313, 1303, 1311, 1314, 0, 1307, + 1318, 1304, 1305, 1306, 1318, 1309, 1312, 1308, 1319, 1314, - 1318, 1322, 1320, 1319, 1317, 1316, 1320, 1323, 1324, 1325, - 1325, 1327, 1329, 1330, 1324, 1333, 1321, 1332, 1330, 1322, - 1331, 1331, 1339, 1332, 1335, 1335, 1340, 1323, 1337, 1327, - 1343, 1337, 1344, 1329, 1346, 1333, 1338, 1338, 1339, 1347, - 1342, 1344, 1340, 1342, 1345, 1345, 1348, 1349, 1350, 1346, - 1343, 1352, 1349, 1351, 1351, 1353, 1354, 1355, 1355, 1356, - 1347, 1357, 1350, 1358, 1362, 1348, 1364, 1359, 1358, 1352, - 1353, 1360, 1360, 1356, 1361, 1363, 1363, 1367, 1361, 1357, - 1365, 1354, 1359, 1366, 1362, 1368, 1371, 1366, 1364, 1372, - 1368, 1365, 1370, 1370, 1373, 1374, 1367, 1375, 1376, 1376, + 1315, 1315, 1317, 1313, 1316, 1316, 1320, 1317, 1321, 1324, + 1322, 1319, 1322, 1325, 1324, 1320, 1322, 1326, 1327, 1328, + 1328, 1321, 1329, 1331, 1330, 1337, 1332, 1329, 1325, 1322, + 1330, 1333, 1336, 1338, 1327, 1344, 1333, 1326, 1331, 1332, + 1334, 1335, 1339, 1337, 1334, 1335, 1340, 1340, 1339, 1342, + 1345, 1348, 1336, 1338, 1347, 1345, 1344, 1346, 1346, 1354, + 1347, 1350, 1350, 1352, 1353, 1353, 1352, 1342, 1355, 1357, + 1358, 1348, 1357, 1359, 1361, 1354, 1360, 1360, 1362, 1363, + 1364, 1365, 1359, 1367, 1355, 1364, 1366, 1366, 1368, 1361, + 1358, 1369, 1370, 1370, 1371, 1365, 1372, 1373, 1363, 1362, - 1377, 1378, 1380, 1372, 1371, 1377, 1379, 1381, 1382, 1374, - 1385, 1380, 1381, 1373, 1373, 1383, 1385, 1383, 1384, 1386, - 1389, 1378, 1375, 1384, 1387, 1391, 1379, 1392, 1382, 1395, - 1387, 1390, 1390, 1392, 1389, 1394, 1396, 1396, 1398, 1386, - 1394, 1397, 1397, 1399, 1391, 1400, 1401, 1402, 1402, 1401, - 1403, 1404, 1398, 1395, 1407, 1412, 1416, 1416, 1406, 1407, - 1400, 1399, 1403, 1405, 1406, 1408, 1405, 1410, 1408, 1405, - 1411, 1404, 1414, 1418, 1413, 1411, 1410, 1413, 1414, 1418, - 1412, 1405, 1415, 1419, 1408, 1417, 1417, 1415, 1419, 1420, - 1421, 1422, 1423, 1424, 1425, 1426, 1424, 1429, 1427, 1428, + 1374, 1367, 1373, 1368, 1375, 1375, 1376, 1377, 1371, 1379, + 1376, 1378, 1378, 1380, 1372, 1374, 1369, 1381, 1382, 1387, + 1383, 1381, 1385, 1385, 1380, 1383, 1386, 1377, 1388, 1389, + 1390, 1379, 1393, 1387, 1391, 1391, 1392, 1382, 1394, 1397, + 1395, 1392, 1401, 1389, 1386, 1396, 0, 1388, 1388, 1395, + 1396, 1398, 1393, 1398, 1400, 1390, 1399, 1402, 1394, 1397, + 1400, 1399, 1401, 1402, 1404, 1405, 1405, 1406, 1407, 1410, + 1409, 1411, 1411, 1413, 1407, 1409, 1412, 1412, 1404, 1414, + 1415, 1416, 1417, 1417, 1416, 1419, 1406, 1413, 1418, 1422, + 1427, 0, 1421, 1410, 1422, 1415, 1420, 1414, 1421, 1420, - 1425, 1426, 1420, 1427, 1430, 1428, 1431, 1431, 1421, 1430, - 1422, 1432, 1423, 1433, 1434, 1435, 1432, 1438, 1436, 1437, - 1429, 1440, 1441, 1439, 1442, 1443, 1444, 1440, 1447, 1438, - 1452, 1433, 1436, 1437, 1434, 1435, 1439, 1446, 1446, 1443, - 1448, 1450, 1441, 1451, 1442, 1448, 1453, 1444, 1447, 1449, - 1449, 1454, 1455, 1458, 1452, 1456, 1450, 1451, 1460, 1457, - 1454, 1462, 1456, 1463, 1453, 1467, 1463, 1455, 1457, 1458, - 1466, 1457, 1470, 1460, 1464, 1464, 1465, 1465, 1460, 1469, - 1469, 1468, 1466, 1467, 1468, 1470, 1462, 1471, 1472, 1473, - 1474, 1475, 1476, 1472, 1473, 1477, 1478, 1480, 1481, 1481, + 1418, 1423, 1420, 1425, 1423, 1419, 1426, 1428, 1431, 1431, + 1428, 1426, 1425, 1429, 1420, 1427, 1430, 1432, 1432, 1429, + 1423, 1430, 1433, 1435, 1434, 1436, 1437, 1438, 1433, 1434, + 1439, 1440, 1441, 1439, 1442, 1443, 1435, 1440, 1441, 1442, + 1444, 1443, 1448, 1436, 1445, 1437, 1449, 1438, 1447, 1445, + 1446, 1446, 1450, 1447, 1451, 1452, 1455, 1456, 1453, 1457, + 1448, 1454, 1455, 1444, 1458, 1459, 1449, 1462, 1451, 1452, + 1453, 1467, 1450, 1465, 1454, 1461, 1461, 1456, 1458, 1457, + 1463, 1464, 1464, 1466, 1468, 1463, 1459, 1462, 1465, 1469, + 1470, 1472, 1471, 1473, 1477, 1467, 1475, 1466, 1469, 1471, - 1482, 1476, 1479, 1480, 1483, 1478, 1471, 1475, 1478, 1474, - 1484, 1479, 1485, 1486, 1477, 1487, 1490, 1483, 1491, 1493, - 1482, 1492, 1492, 1494, 1498, 1495, 1485, 1487, 1484, 1486, - 1495, 1497, 1494, 1496, 1496, 1493, 1491, 1499, 1500, 1501, - 1497, 1490, 1498, 1497, 1501, 1501, 1503, 1504, 1496, 1505, - 1506, 1507, 1508, 1509, 1509, 1506, 1500, 1507, 1499, 1510, - 1503, 1511, 1504, 1512, 1515, 1510, 1511, 1513, 1516, 1512, - 1508, 1505, 1517, 1513, 1518, 1520, 1519, 1524, 1517, 1519, - 1522, 1520, 1516, 1525, 1515, 1519, 1526, 1518, 1522, 1527, - 1528, 1529, 1530, 1531, 1526, 1533, 1524, 1535, 1527, 1532, + 1472, 1478, 1468, 1472, 1478, 1470, 1479, 1479, 1481, 1473, + 1482, 1475, 1480, 1480, 1483, 1486, 1475, 1483, 1485, 1477, + 1481, 1484, 1484, 1489, 1487, 1488, 1491, 1490, 1482, 1487, + 1488, 1485, 1492, 1495, 1486, 1491, 1493, 1494, 1497, 1495, + 1496, 1496, 1489, 1490, 1498, 1493, 1494, 1499, 1493, 1500, + 1501, 1492, 1504, 1507, 1502, 1508, 1503, 1498, 1497, 1502, + 1502, 1503, 1511, 1500, 1504, 1499, 1501, 1509, 1509, 1510, + 1512, 1511, 1514, 1508, 1515, 1512, 1513, 1513, 1507, 1516, + 1517, 1514, 1518, 1520, 1514, 1510, 1521, 1518, 1518, 1522, + 1523, 1513, 1515, 1524, 1525, 1523, 1532, 1520, 1517, 1524, - 1532, 1533, 1525, 1528, 1529, 1534, 1530, 1531, 1536, 1537, - 1535, 1534, 1538, 1539, 1540, 1541, 1542, 1543, 1545, 1545, - 1540, 1532, 1546, 1552, 0, 1547, 1539, 1537, 1536, 1547, - 1554, 1538, 1542, 1548, 1549, 1543, 1550, 1541, 1548, 1549, - 1551, 1550, 1546, 1555, 1555, 1554, 1552, 1556, 1557, 1551, - 1558, 1559, 1559, 1560, 1561, 1564, 1562, 1565, 1563, 1566, - 1557, 1561, 1568, 1567, 1659, 1566, 1556, 1560, 1562, 1558, - 1563, 1659, 1569, 1571, 1564, 1567, 1571, 1565, 1569, 1575, - 1568, 1570, 1570, 1572, 1572, 1574, 1576, 1578, 1575, 1579, - 1574, 1579, 1576, 1577, 1577, 1580, 1581, 1582, 1580, 1578, + 1516, 1521, 1526, 1526, 1527, 1533, 0, 1541, 1528, 1529, + 1527, 1522, 1525, 1528, 1530, 1529, 1532, 1534, 1535, 1533, + 1530, 1536, 1537, 1534, 1536, 1539, 1541, 1542, 1537, 1543, + 1536, 1535, 1544, 1539, 1545, 1546, 1547, 1543, 1548, 1549, + 1549, 1544, 1552, 1550, 1553, 1551, 1542, 1545, 1546, 1550, + 1547, 1551, 1548, 1554, 1555, 1552, 1556, 1557, 1558, 1559, + 1560, 1549, 1563, 1557, 1553, 1562, 1562, 1569, 1564, 1556, + 1571, 1554, 1564, 1555, 1565, 1559, 1566, 1568, 1560, 1565, + 1558, 1566, 1563, 1567, 1573, 1571, 1568, 1574, 1567, 1575, + 1569, 1572, 1572, 1576, 1576, 1577, 1581, 1578, 1579, 1574, - 1583, 1585, 1584, 1586, 1589, 1587, 1585, 1588, 1591, 1589, - 1593, 1597, 1586, 0, 1590, 1593, 1581, 1587, 1583, 1582, - 1584, 1592, 1588, 1590, 1594, 1596, 1592, 1598, 1591, 1595, - 1595, 1596, 1597, 1592, 1599, 1600, 1590, 1602, 1601, 1594, - 1601, 1603, 1603, 1604, 1604, 1606, 1598, 1605, 1605, 1609, - 1599, 1602, 1610, 1602, 1617, 1600, 1607, 1607, 1608, 1608, - 1611, 1611, 1612, 1613, 1614, 1606, 1612, 1614, 1616, 1613, - 1609, 1618, 1617, 1610, 1616, 1619, 1620, 1618, 1623, 1620, - 1621, 1621, 1622, 1622, 1623, 1624, 1625, 1626, 1627, 1628, - 1630, 1631, 1637, 1634, 1627, 1630, 1630, 1624, 1624, 1624, + 1580, 1582, 1584, 1573, 1578, 1583, 1585, 1586, 1575, 1577, + 1579, 1583, 1580, 1586, 1584, 1581, 1587, 1587, 1591, 1588, + 1592, 1582, 1588, 1591, 1585, 1589, 1589, 1593, 1595, 1592, + 1594, 1594, 1596, 1593, 1596, 1597, 1598, 1599, 1597, 1600, + 1595, 1602, 1601, 1603, 1607, 1606, 1602, 1605, 1608, 1604, + 1606, 1614, 1603, 1607, 1612, 1612, 1598, 1600, 1609, 1599, + 1601, 1604, 1605, 1609, 1610, 1611, 1607, 1613, 1608, 1610, + 1609, 1615, 1614, 1613, 1617, 1616, 1618, 1623, 1618, 1619, + 1611, 1620, 1620, 1621, 1621, 1622, 1622, 1624, 1624, 1626, + 1615, 1616, 1627, 1619, 1617, 1619, 1634, 1623, 1625, 1625, - 1619, 1632, 1633, 1632, 1624, 1631, 1625, 1626, 1634, 1628, - 1635, 1636, 1637, 1633, 1638, 1640, 1635, 1639, 1639, 1642, - 1636, 1641, 1641, 1643, 1644, 1644, 1645, 1645, 1646, 1649, - 1649, 1650, 1654, 1651, 1653, 1638, 1656, 1656, 1655, 1642, - 1657, 1640, 1651, 1653, 1655, 1643, 1660, 1658, 1646, 1661, - 1662, 1662, 1663, 1654, 1664, 1660, 1650, 1668, 1666, 1667, - 1669, 1657, 1658, 1666, 1673, 1667, 1670, 1669, 1671, 1673, - 1664, 1675, 1670, 1674, 1671, 1661, 1676, 1668, 1663, 1672, - 1672, 1677, 1674, 1678, 1679, 1680, 1678, 1681, 1681, 1683, - 1682, 1675, 1684, 1677, 1685, 1676, 1682, 1687, 1685, 1688, + 1628, 1628, 1629, 1630, 1631, 1633, 1629, 1631, 1636, 1630, + 1626, 1633, 1635, 1627, 1634, 1641, 1637, 1642, 1635, 1637, + 1638, 1638, 1639, 1639, 1640, 1643, 1644, 1641, 1641, 1641, + 1640, 1645, 1644, 1636, 1641, 1647, 1648, 1642, 1650, 1651, + 1647, 1647, 1649, 1654, 1649, 1643, 1652, 1653, 1655, 1650, + 1648, 1645, 1652, 1657, 1651, 1659, 1653, 1656, 1656, 1658, + 1658, 1660, 1663, 1654, 1661, 1661, 1662, 1662, 1667, 1655, + 1666, 1666, 1668, 1671, 1672, 1659, 1670, 1673, 1673, 1657, + 1672, 1668, 1663, 1660, 1674, 1670, 1675, 1677, 1676, 1678, + 1679, 1679, 1680, 1667, 1671, 1676, 1677, 1681, 1683, 1685, - 1689, 1691, 1679, 1690, 1690, 1689, 1694, 1684, 1692, 1683, - 1702, 1680, 1695, 1696, 1685, 1697, 1695, 1687, 1699, 1696, - 1691, 1688, 1699, 1692, 1697, 1694, 1698, 1698, 1700, 1701, - 1701, 1702, 1703, 1704, 1706, 1705, 1707, 1708, 1709, 1700, - 1705, 1713, 1710, 1708, 1700, 1713, 1703, 1710, 1711, 1711, - 1712, 1712, 1704, 1709, 1706, 1715, 1707, 1716, 1717, 1718, - 1718, 1719, 1719, 1721, 1715, 1720, 1722, 1723, 1716, 1721, - 1720, 1720, 1722, 1716, 1724, 1725, 1726, 1728, 1717, 1724, - 1729, 1731, 1726, 1730, 1729, 1732, 1733, 1725, 1734, 1728, - 1735, 1732, 1737, 1723, 1734, 1730, 1738, 1741, 1739, 1745, + 1684, 1675, 1686, 1683, 1687, 1674, 1684, 1690, 1695, 1686, + 1687, 1691, 1688, 1681, 1688, 1678, 1694, 1691, 1680, 1685, + 1692, 1692, 1693, 1696, 1697, 1694, 1690, 1693, 1695, 1698, + 1699, 1700, 1698, 1701, 1701, 1702, 1697, 1704, 1703, 1705, + 1707, 1702, 1696, 1705, 1708, 1709, 1710, 1710, 1699, 1711, + 1709, 1714, 1704, 0, 1712, 1717, 1716, 1700, 1703, 1705, + 1707, 1715, 1716, 1719, 1717, 1715, 1708, 1719, 1711, 1712, + 1714, 1718, 1718, 1720, 1721, 1721, 1722, 1723, 1725, 1724, + 1726, 1727, 1728, 1725, 1720, 1730, 1737, 1729, 1728, 1720, + 1730, 1723, 1731, 1731, 1732, 1732, 1735, 1722, 1724, 1733, - 1741, 1746, 1735, 1739, 1737, 1755, 1731, 1746, 1733, 1742, - 1742, 1743, 1743, 1744, 1744, 1738, 1747, 1755, 1748, 1745, - 1749, 1750, 1747, 1748, 1752, 1754, 1749, 1758, 1754, 1752, - 1750, 1756, 1756, 1759, 1762, 1760, 1761, 1761, 1766, 1758, - 1760, 1763, 1764, 1762, 1767, 1759, 1763, 1764, 1765, 1765, - 1768, 1769, 1770, 1767, 1771, 1772, 1770, 1773, 1766, 1771, - 1774, 1772, 1775, 1776, 1778, 1778, 1779, 1783, 1768, 1774, - 1769, 1784, 1780, 1781, 1781, 1773, 1778, 1776, 1782, 1783, - 1775, 1780, 1786, 1785, 1779, 1789, 1789, 1782, 1785, 1792, - 1791, 1793, 1784, 1791, 1795, 1786, 1796, 1797, 1798, 1799, + 1726, 1727, 1729, 1733, 1736, 1735, 1737, 1738, 1738, 1739, + 1739, 1740, 1741, 1742, 1743, 1736, 1740, 1740, 1741, 1742, + 1736, 1744, 1745, 1746, 1748, 1750, 1744, 1749, 1751, 1746, + 1753, 1749, 1752, 1754, 1745, 1755, 1748, 1750, 1752, 1754, + 1743, 1758, 1757, 1759, 1762, 1762, 1761, 1755, 1759, 1761, + 1763, 1763, 1753, 1751, 1757, 1764, 1764, 1765, 1766, 1767, + 1758, 1768, 1769, 1770, 1766, 1767, 1768, 1774, 1769, 1772, + 1774, 1775, 1770, 1778, 1772, 1776, 1776, 1765, 1779, 1780, + 1781, 1781, 1782, 1775, 1780, 1778, 1786, 1783, 1784, 1787, + 1779, 1782, 1783, 1784, 1785, 1785, 1788, 1789, 1787, 1790, - 1799, 1804, 1800, 1797, 1800, 1792, 1802, 1793, 1804, 1795, - 1796, 1801, 1801, 1805, 1802, 1798, 1806, 1806, 1807, 1808, - 1809, 1812, 1810, 1811, 1813, 1814, 1816, 1807, 0, 1817, - 1819, 1814, 1809, 1805, 1810, 1811, 1818, 1818, 1820, 1813, - 1808, 1817, 1821, 1823, 1814, 1821, 1816, 1812, 1819, 1822, - 1825, 1826, 1827, 1826, 1822, 1825, 1828, 1829, 1820, 1831, - 1833, 1828, 1834, 1823, 1829, 1835, 1837, 1836, 1831, 1836, - 1827, 1834, 1839, 1840, 1839, 1841, 1841, 1835, 1833, 1842, - 1844, 1843, 1844, 1845, 1846, 1837, 1843, 1840, 1845, 1846, - 1847, 1848, 1849, 1851, 1850, 1852, 1854, 1858, 1849, 1850, + 1791, 1792, 1793, 1790, 1794, 1791, 1786, 1792, 1795, 1796, + 1798, 1798, 1799, 1794, 1788, 1800, 1789, 1801, 1801, 1802, + 1793, 1803, 1798, 1796, 1800, 1804, 1795, 1805, 1802, 1806, + 1799, 1812, 1805, 1803, 1809, 1809, 1811, 1813, 1816, 1811, + 1815, 0, 1806, 1817, 1819, 1819, 1804, 1812, 1820, 1817, + 1820, 1822, 1816, 1813, 1824, 1815, 1821, 1821, 1825, 1822, + 1827, 1824, 1826, 1826, 1828, 1829, 1832, 1830, 1831, 1827, + 1834, 1833, 1837, 1836, 1838, 1838, 1834, 1829, 1825, 1830, + 1831, 1839, 1840, 1842, 1837, 1828, 1833, 1841, 1842, 1834, + 1841, 1843, 1832, 1836, 1846, 1845, 1846, 1847, 1848, 1839, - 1855, 1856, 1856, 1852, 1859, 1842, 1851, 1860, 1847, 1857, - 1857, 1848, 1858, 1860, 1855, 1854, 1861, 1862, 1863, 1862, - 1865, 1861, 1864, 1864, 1859, 1870, 1863, 1866, 1866, 1867, - 1867, 1868, 1865, 1869, 1863, 1872, 1874, 1873, 1869, 1873, - 1868, 1877, 1879, 1870, 1872, 1875, 1876, 1872, 1884, 1883, - 1875, 1875, 1887, 1877, 1879, 1876, 1880, 1874, 1881, 1888, - 1885, 1880, 1883, 1881, 1886, 1886, 1889, 1890, 1884, 1885, - 1887, 1891, 1893, 1894, 1895, 1896, 1904, 1888, 1897, 1898, - 1896, 1890, 1889, 1897, 1893, 1894, 1891, 1901, 1898, 1903, - 1905, 1906, 1907, 1901, 1895, 1903, 1909, 1909, 1908, 1904, + 1845, 1849, 1840, 1848, 1851, 1853, 1855, 1854, 1849, 1857, + 1856, 1843, 1856, 1851, 1862, 1847, 1854, 1859, 1855, 1859, + 1860, 1861, 1861, 1853, 1863, 1864, 1865, 1864, 1857, 1863, + 1866, 1865, 1867, 1868, 1860, 1866, 1869, 1872, 1870, 1871, + 1862, 1873, 1869, 1870, 1876, 1877, 1873, 1873, 1874, 1872, + 1867, 1880, 1871, 1868, 1878, 1878, 1874, 1879, 1879, 1877, + 1881, 1882, 1887, 1876, 1883, 1885, 1880, 1882, 1884, 1883, + 1884, 1886, 1886, 1885, 1887, 1888, 1888, 1889, 1889, 1890, + 1881, 1885, 1891, 1892, 1894, 1896, 1898, 1891, 1890, 1895, + 1899, 1895, 1897, 1894, 1905, 1898, 1894, 1897, 1897, 1901, - 1912, 1910, 1911, 1911, 1913, 1905, 1901, 1908, 1913, 1906, - 1910, 1914, 1915, 1921, 0, 1916, 1914, 1907, 1917, 1912, - 1916, 1916, 1918, 1919, 1917, 1915, 1919, 1920, 1918, 1924, - 1924, 1925, 1925, 1921, 1926, 1920, 1927, 1927, 1928, 1928, - 1929, 1930, 1931, 1926, 1932, 1942, 1925, 1939, 1931, 1932, - 1933, 1933, 1929, 1934, 1934, 1935, 1936, 1925, 1943, 1930, - 1935, 1938, 1936, 1943, 1940, 1938, 1944, 1939, 1940, 1945, - 1942, 1946, 1947, 1949, 1950, 1948, 1946, 1951, 1953, 1950, - 1952, 1952, 1953, 1954, 1945, 1956, 1958, 1955, 1957, 1944, - 1947, 1948, 1955, 1949, 1960, 1961, 1959, 1965, 1954, 1951, + 1902, 1892, 1899, 1903, 1906, 1902, 1896, 1905, 1903, 1907, + 1909, 1901, 1908, 1908, 1910, 1911, 1912, 1915, 1907, 1913, + 1917, 1916, 1918, 1926, 1906, 1929, 1920, 1918, 1909, 1915, + 1912, 1911, 1910, 1916, 1913, 1920, 1919, 1923, 1925, 1927, + 1917, 1919, 1928, 1923, 1925, 1934, 1926, 0, 1930, 1932, + 1929, 1931, 1931, 1937, 1927, 1935, 1923, 1930, 1932, 1935, + 1928, 1933, 1933, 1936, 1934, 1938, 1937, 1939, 1936, 1940, + 1938, 1938, 1942, 1939, 1941, 1940, 1943, 1941, 1946, 1946, + 1942, 1948, 1947, 1947, 1949, 1949, 1950, 1950, 1951, 1952, + 1948, 1960, 1953, 1961, 1954, 1960, 1943, 1947, 1953, 1954, - 1957, 1959, 1962, 1962, 1964, 1958, 1966, 1960, 1967, 1968, - 1969, 1956, 1964, 1961, 1970, 1971, 1965, 1972, 1978, 1974, - 1975, 1975, 2139, 1976, 1977, 1966, 1976, 1971, 1979, 1969, - 2139, 1967, 1978, 1968, 1974, 1970, 1983, 1977, 1972, 1980, - 1980, 1979, 1981, 1981, 1982, 1982, 1984, 1985, 1985, 1986, - 1988, 1983, 1987, 1987, 1991, 1988, 1992, 1990, 1986, 1984, - 1993, 1986, 1990, 1994, 1994, 1995, 1995, 1996, 1997, 1997, - 1998, 2004, 1993, 2007, 1991, 2000, 1992, 1999, 1999, 2001, - 2002, 2002, 2003, 2003, 2001, 2004, 1996, 2005, 1998, 2006, - 2000, 2011, 2007, 2009, 2010, 2010, 2005, 2013, 2009, 2012, + 1951, 1955, 1955, 1956, 1956, 1957, 1958, 1952, 1947, 1964, + 1957, 1962, 1958, 1961, 1965, 1962, 1966, 1967, 1968, 1965, + 1969, 1970, 1971, 1968, 1972, 1973, 1974, 1974, 1976, 1972, + 1978, 1975, 1967, 1979, 1964, 1975, 1977, 1970, 1969, 1966, + 1980, 1977, 1971, 1976, 1981, 1979, 1983, 1973, 1982, 1981, + 1984, 1984, 1986, 1987, 1988, 1989, 1978, 1990, 1991, 1980, + 1986, 1982, 1992, 1993, 1983, 1994, 1999, 1996, 1997, 1997, + 2000, 1998, 1987, 1988, 1998, 1993, 2001, 1991, 1989, 1999, + 2005, 1990, 1996, 1992, 2000, 2006, 1994, 2002, 2002, 2001, + 2003, 2003, 2004, 2004, 2008, 2005, 2007, 2007, 2006, 2009, - 2012, 2014, 2015, 2006, 2018, 2015, 2019, 2014, 2016, 2016, - 2011, 2017, 2017, 2020, 2023, 2013, 2021, 2021, 2024, 2028, - 2025, 2019, 2026, 2018, 2016, 2029, 2026, 2027, 2027, 2030, - 2032, 2032, 2020, 2033, 2023, 2025, 2034, 2035, 2028, 2036, - 2029, 2024, 2037, 2034, 2030, 2038, 2039, 2039, 2041, 2040, - 2041, 2035, 2042, 2033, 2044, 2042, 2045, 2036, 2040, 2046, - 2037, 2045, 2047, 2048, 2046, 2049, 2044, 2051, 2050, 2053, - 2042, 2038, 2042, 2050, 2053, 2054, 2048, 2055, 2056, 2057, - 2054, 2061, 2058, 2062, 2056, 2059, 2049, 2047, 2058, 2060, - 2059, 2068, 2055, 2051, 2060, 2063, 2062, 2073, 2063, 2064, + 2009, 2013, 2010, 2008, 2012, 2014, 2008, 2010, 2015, 2012, + 2016, 2016, 2017, 2017, 2018, 2019, 2019, 2020, 2021, 2021, + 2015, 2013, 2022, 2023, 2026, 2014, 2024, 2024, 2023, 2025, + 2025, 2027, 2028, 2018, 2029, 2020, 2031, 2022, 2026, 2033, + 2027, 2031, 2032, 2032, 2034, 2034, 2028, 2035, 2036, 2037, + 2038, 2038, 2037, 2029, 2036, 2039, 2039, 2040, 2033, 2041, + 2042, 2045, 2042, 2044, 2048, 2035, 2038, 2046, 2046, 2049, + 2050, 2051, 2052, 2052, 2041, 2051, 2040, 2053, 2044, 2054, + 2045, 2058, 2055, 2059, 2048, 2050, 2057, 2057, 2060, 2061, + 2059, 2062, 2049, 2063, 2054, 2065, 2053, 2055, 2064, 2064, - 2057, 2065, 2066, 2067, 2079, 2068, 2061, 2069, 2064, 2070, - 2065, 2066, 2067, 2069, 2071, 2070, 2075, 2073, 2071, 2076, - 2076, 2077, 2078, 2078, 2079, 2075, 2079, 2077, 2081, 2082, - 2085, 2078, 2083, 2083, 2084, 2087, 2088, 2092, 2089, 2085, - 2092, 2093, 2090, 2094, 2081, 2082, 2093, 2087, 2095, 2084, - 2096, 2096, 2088, 2089, 2090, 2097, 2097, 2099, 2099, 2100, - 2095, 2101, 2100, 2094, 2102, 2103, 2101, 2104, 2104, 2105, - 2102, 2103, 2106, 2106, 2107, 2108, 2109, 2110, 2110, 2111, - 2112, 0, 2113, 2105, 2115, 2111, 2107, 2113, 2115, 2108, - 2116, 2117, 2117, 2116, 2112, 2109, 2118, 2119, 2120, 2121, + 2069, 2058, 2060, 2066, 2065, 2066, 2072, 2061, 2067, 2062, + 2070, 2067, 2069, 2071, 2073, 2070, 2074, 2075, 2071, 2063, + 2076, 2080, 2075, 2082, 2078, 2079, 2067, 2073, 2067, 2078, + 2079, 2072, 2081, 2083, 2086, 2084, 2080, 2074, 2081, 2083, + 2084, 2087, 2085, 2089, 2082, 2088, 2076, 2085, 2088, 2090, + 2093, 2091, 2089, 2092, 2087, 2094, 2098, 2095, 2090, 2086, + 2091, 2094, 2092, 2095, 2093, 2096, 2100, 2101, 2101, 2096, + 2104, 2102, 2103, 2103, 2109, 2100, 2098, 2102, 2106, 2107, + 2113, 2103, 2108, 2108, 2110, 2112, 2114, 2115, 2117, 2109, + 2104, 2117, 2104, 2110, 2106, 2107, 2113, 2112, 2118, 2115, - 2123, 2118, 2125, 2121, 2122, 2122, 2119, 2125, 2126, 2127, - 2128, 2129, 2130, 2123, 2131, 2129, 2132, 2133, 2120, 2131, - 2134, 2136, 2132, 2133, 2128, 2137, 2143, 2138, 2126, 2127, - 2137, 2146, 2130, 2138, 2140, 2149, 2140, 2136, 2134, 2149, - 2143, 2144, 2144, 2145, 2147, 2147, 2145, 2150, 2151, 2152, - 2152, 2158, 2153, 2150, 2156, 2156, 2160, 2146, 2161, 2164, - 2151, 2153, 2165, 2166, 2164, 2174, 2167, 2175, 2166, 2158, - 2160, 2167, 2168, 2168, 2161, 2170, 2170, 2172, 2173, 2173, - 2176, 2174, 2178, 2172, 2179, 2176, 2180, 2180, 2165, 2175, - 2182, 2183, 2184, 2185, 2187, 2187, 2179, 2183, 2188, 2182, + 2119, 2114, 2120, 2118, 2121, 2121, 2122, 2122, 2124, 2124, + 2125, 2126, 2127, 2125, 2120, 2128, 2126, 2130, 2127, 2133, + 2119, 2128, 2129, 2129, 2131, 2131, 2132, 2134, 2135, 2135, + 2136, 2130, 2138, 2133, 2137, 2140, 2136, 2138, 2132, 2140, + 2141, 2142, 2142, 2141, 2143, 2144, 2134, 2145, 2137, 2143, + 2148, 2146, 2147, 2147, 2144, 2146, 2150, 2151, 2152, 2153, + 2154, 2150, 2155, 2148, 2154, 2156, 2157, 2145, 2158, 2159, + 2156, 2162, 2157, 2153, 2158, 2161, 2162, 2151, 2152, 2163, + 2164, 2165, 2155, 2165, 2168, 2163, 2171, 2159, 2164, 2169, + 2169, 2161, 2170, 2172, 2172, 2170, 2174, 2175, 2168, 2176, - 2189, 2178, 2191, 2191, 2192, 2192, 2193, 2194, 2185, 2196, - 2184, 2193, 2195, 2197, 2196, 2197, 2198, 2188, 2189, 2199, - 2200, 2195, 2201, 2202, 2203, 2194, 2209, 2201, 2244, 2203, - 2198, 2244, 2200, 2199, 2204, 2204, 2205, 2205, 2206, 2206, - 2207, 2207, 2208, 2202, 2209, 2210, 2211, 2211, 2212, 2212, - 2210, 2213, 2214, 2215, 2208, 2216, 2217, 2217, 2218, 2219, - 2219, 2220, 2220, 2213, 2214, 2221, 2222, 2223, 2224, 2225, - 2226, 2216, 2227, 2215, 2223, 2226, 2221, 2218, 2222, 2228, - 2224, 2229, 2229, 2231, 2230, 2232, 2234, 2233, 2235, 2225, - 2236, 2236, 2227, 2230, 2237, 2241, 2238, 2239, 2242, 2228, + 2174, 2177, 2177, 2175, 2178, 2181, 2181, 2183, 2185, 2189, + 2186, 2176, 2171, 2178, 2189, 2190, 2191, 2199, 2192, 2193, + 2193, 2191, 2185, 2192, 2197, 2183, 2186, 2195, 2195, 2200, + 2197, 2198, 2198, 2199, 2201, 2203, 2205, 2204, 2206, 2201, + 2204, 2190, 2207, 2207, 2209, 2211, 2210, 2212, 2205, 2215, + 2206, 2200, 2210, 2209, 2203, 2214, 2214, 2216, 2218, 2218, + 2219, 2219, 2212, 2211, 2220, 2221, 2223, 2222, 2215, 2220, + 2224, 2223, 2224, 2225, 2226, 2216, 2222, 2227, 2229, 2228, + 2230, 2231, 2231, 2221, 2228, 2230, 2236, 2225, 2226, 2227, + 2232, 2232, 2233, 2233, 2234, 2234, 2235, 2237, 2229, 2238, - 2233, 2243, 2235, 2237, 2245, 2232, 2248, 2248, 0, 2231, - 2234, 2238, 2239, 2241, 2246, 2255, 2247, 2257, 2245, 2246, - 2242, 2247, 2249, 2249, 2243, 2250, 2250, 2252, 2252, 2254, - 2254, 2256, 2259, 2255, 2261, 2260, 2257, 2262, 2263, 2264, - 2266, 2265, 2256, 2265, 2267, 2268, 2272, 2263, 2269, 2269, - 2271, 2271, 2259, 2260, 2278, 2273, 2261, 2262, 2276, 2264, - 2266, 2279, 2267, 2268, 2273, 2274, 2274, 2276, 2272, 2277, - 2277, 2280, 2278, 2281, 2282, 2283, 2285, 2293, 2280, 2279, - 2284, 2286, 2286, 2287, 2287, 2288, 2289, 2290, 2281, 2291, - 2294, 2288, 2282, 2283, 2292, 2285, 2284, 2293, 2295, 2292, + 2238, 2240, 2237, 2241, 2236, 2239, 2239, 2242, 2235, 2243, + 2244, 2244, 2245, 2240, 2249, 2241, 2246, 2246, 2247, 2247, + 2252, 2248, 2250, 2251, 2254, 2243, 2249, 2242, 2253, 2250, + 2255, 2245, 2248, 2253, 2257, 2251, 2256, 2256, 2258, 2259, + 2252, 2260, 2261, 2257, 2254, 2268, 2262, 2263, 2263, 2264, + 2255, 2269, 2265, 2266, 2260, 2270, 2272, 2282, 2264, 2259, + 2262, 2283, 2271, 2268, 2258, 2271, 2261, 2265, 2266, 2273, + 2272, 2274, 2283, 2269, 2273, 2282, 2274, 2284, 2270, 2275, + 2275, 2276, 2276, 2277, 2277, 2279, 2279, 2281, 2281, 2286, + 2287, 2288, 2289, 2290, 2291, 2292, 2284, 2292, 2293, 2294, - 2297, 2297, 2290, 2295, 2289, 2296, 2301, 2296, 2291, 2298, - 2294, 2298, 2299, 2299, 2303, 2304, 2305, 2306, 2308, 2307, - 2309, 2312, 2316, 2303, 2307, 2301, 2313, 2315, 2305, 2313, - 2314, 2314, 2317, 2317, 2304, 2320, 2323, 2306, 2308, 2309, - 2316, 2312, 2315, 2318, 2321, 2322, 2322, 2318, 2321, 2323, - 2320, 2325, 2326, 2327, 2327, 2329, 2330, 2331, 2332, 2332, - 2333, 2331, 2334, 2334, 2335, 2330, 2336, 2329, 2337, 2335, - 2338, 2325, 2326, 2339, 2339, 2336, 2344, 2344, 2345, 2333, - 2346, 2346, 2338, 2347, 2337, 2348, 2349, 2352, 2350, 2351, - 2351, 2354, 2354, 2359, 2357, 2349, 2347, 2350, 2348, 2357, + 2299, 2295, 2290, 2296, 2296, 2298, 2298, 2300, 2287, 2286, + 2301, 2301, 2289, 2288, 2291, 2303, 2300, 2294, 2293, 2295, + 2304, 2304, 2299, 2305, 2303, 2306, 2307, 2308, 2309, 2310, + 2312, 2318, 2311, 2307, 2313, 2313, 2314, 2314, 2315, 2316, + 2317, 2305, 2308, 2306, 2315, 2320, 2309, 2310, 2311, 2312, + 2318, 2319, 2321, 2322, 2328, 2317, 2319, 2316, 2322, 2323, + 2330, 2323, 2324, 2324, 2325, 2320, 2325, 2326, 2326, 2330, + 2331, 2332, 2321, 2328, 2333, 2334, 2335, 2342, 2336, 2339, + 2334, 2340, 2343, 2332, 2340, 2341, 2341, 2344, 2344, 2331, + 2345, 2346, 2342, 2349, 2333, 2354, 2335, 2336, 2347, 2339, - 2345, 2358, 2352, 2360, 2361, 2362, 2358, 2359, 2360, 2363, - 2366, 2364, 2361, 2369, 2374, 2367, 2368, 0, 2363, 2364, - 2367, 2368, 2370, 2370, 2362, 2366, 2371, 2371, 2369, 2372, - 2373, 2375, 2374, 2376, 0, 2373, 2372, 2377, 2379, 2376, - 2378, 2378, 2377, 2380, 2381, 2381, 2382, 2382, 2380, 2375, - 2385, 2386, 2386, 2379, 2387, 2388, 2397, 2387, 2410, 2389, - 2388, 2388, 2390, 2385, 2389, 2391, 2392, 2390, 2393, 2394, - 2392, 2391, 2395, 2393, 2396, 2398, 2410, 2397, 2394, 2399, - 2401, 2398, 2396, 2400, 2403, 2399, 2406, 2395, 2400, 2403, - 2404, 2408, 2401, 2404, 2409, 2411, 2408, 2412, 2406, 2409, + 2343, 2345, 2347, 2350, 2351, 2351, 2346, 2350, 2349, 2352, + 2355, 2356, 2356, 2358, 2359, 2354, 2360, 2361, 2361, 2362, + 2360, 2367, 2352, 2359, 2364, 2358, 2363, 2363, 2365, 2364, + 2355, 2366, 2374, 2367, 2368, 2368, 2376, 2365, 2362, 2373, + 2373, 2375, 2375, 2377, 2378, 2381, 2379, 2366, 2388, 2376, + 2380, 2380, 2391, 2378, 2374, 2379, 2377, 2383, 2383, 2386, + 2381, 2387, 2388, 2389, 2386, 2390, 2387, 2392, 2389, 2393, + 2395, 2391, 2398, 2390, 2396, 2397, 2392, 2393, 2403, 2396, + 2397, 2399, 2399, 2400, 2400, 2395, 2401, 2398, 2404, 2402, + 2406, 2405, 2408, 2401, 2402, 2406, 2403, 2405, 2407, 2407, - 2413, 2414, 2414, 2415, 2418, 2419, 2412, 2420, 2411, 2413, - 2421, 2421, 2415, 2422, 2424, 2423, 2425, 2425, 2426, 2428, - 2430, 2432, 2432, 2418, 2423, 2419, 2420, 2431, 2433, 2424, - 2434, 2431, 2422, 2435, 2428, 2436, 2434, 2426, 2438, 2435, - 2430, 2436, 2437, 2437, 2439, 2441, 2438, 2442, 2444, 2439, - 2445, 2446, 2444, 2433, 2441, 2448, 2448, 2449, 2449, 2453, - 2442, 2450, 2450, 2453, 2445, 2454, 2446, 2452, 2452, 2458, - 2454, 2456, 2456, 2459, 2460, 2461, 2463, 2471, 2459, 2469, - 2461, 2461, 2464, 2464, 2466, 2466, 2460, 2467, 2467, 2458, - 2468, 2473, 2469, 2468, 2477, 2471, 2463, 2474, 2474, 2475, + 2409, 2410, 2410, 2411, 2411, 2409, 2404, 2408, 2414, 2415, + 2415, 2416, 2417, 2424, 2416, 2418, 2420, 2417, 2417, 2419, + 2418, 2414, 2420, 2421, 2419, 2422, 2423, 2421, 2424, 2425, + 2422, 2426, 2427, 2428, 2430, 2423, 2429, 2425, 2427, 2428, + 2432, 2429, 2435, 2437, 2433, 2432, 2430, 2433, 2437, 2439, + 2438, 2440, 2426, 2441, 2435, 2438, 2442, 2443, 2443, 2444, + 2447, 2448, 2441, 2449, 2440, 2442, 2451, 2439, 2444, 2450, + 2450, 2452, 2453, 2454, 2454, 2455, 2457, 2459, 2462, 2447, + 2452, 2448, 2449, 2471, 2460, 2451, 2463, 2453, 2460, 2461, + 2461, 2457, 2463, 2464, 2455, 2465, 2471, 2459, 2467, 2464, - 2475, 2476, 2476, 2478, 2478, 2479, 2480, 2481, 2482, 2477, - 2488, 2473, 2483, 2483, 2482, 2484, 2489, 2487, 2479, 2484, - 2490, 2481, 2487, 2487, 2480, 2491, 2492, 2493, 2495, 2495, - 2494, 2491, 2492, 2488, 2494, 2500, 2489, 2498, 2501, 2503, - 2490, 2501, 2498, 2500, 2504, 2505, 2506, 2504, 2507, 2508, - 0, 2506, 2493, 2509, 2510, 2510, 2511, 2512, 2513, 2514, - 2512, 2517, 2505, 2505, 2503, 2515, 2507, 2509, 2512, 2508, - 2511, 2516, 2513, 2515, 2518, 2518, 2516, 2516, 2514, 2523, - 2517, 2519, 2519, 2520, 2520, 2521, 2521, 2522, 2522, 2524, - 2525, 2526, 2527, 2528, 2524, 2523, 2529, 2531, 2531, 2532, + 2470, 2465, 2468, 2462, 2466, 2466, 2467, 2468, 2473, 2470, + 2474, 2475, 2476, 2474, 2473, 2475, 2477, 2479, 2479, 2480, + 2480, 2481, 2481, 2483, 2483, 2484, 2476, 2485, 2489, 2484, + 2490, 2477, 2485, 2487, 2487, 2490, 2492, 2491, 2494, 2495, + 2495, 2492, 2492, 2497, 2497, 2498, 2498, 2499, 2489, 2491, + 2499, 2500, 2502, 2504, 2505, 2505, 2506, 2506, 2494, 2507, + 2507, 2508, 2509, 2509, 2500, 2510, 2511, 2512, 2513, 2519, + 2502, 2514, 2514, 2504, 2513, 2515, 2508, 2518, 2510, 2515, + 2520, 2512, 2518, 2518, 2511, 2521, 2524, 2522, 2523, 2526, + 2526, 2525, 2519, 2522, 2523, 2525, 2529, 2534, 2531, 2532, - 2533, 2527, 2532, 2535, 2535, 2536, 2537, 2537, 2545, 2538, - 2525, 0, 2536, 2528, 2538, 2541, 2529, 2526, 2533, 2540, - 2540, 2542, 2543, 2548, 2541, 2547, 2545, 2546, 2546, 2547, - 2542, 2543, 2548, 2549, 2550, 2552, 2551, 2556, 2560, 2550, - 2550, 2561, 2556, 2562, 2552, 2557, 2557, 2564, 2549, 2551, - 2559, 2559, 2560, 2565, 2568, 2569, 2564, 2570, 2573, 2575, - 0, 2562, 2571, 2621, 2569, 2565, 2561, 2577, 2571, 2578, - 2573, 2621, 2577, 2580, 2578, 2579, 2579, 2570, 2582, 2568, - 2575, 2589, 2580, 2582, 2583, 2583, 2585, 2585, 2583, 2586, - 2586, 2587, 2587, 2588, 2590, 2591, 2597, 2593, 2598, 2594, + 2520, 2529, 2532, 2536, 2535, 2521, 2531, 2535, 2537, 2538, + 2539, 2524, 2540, 2537, 2541, 2541, 2545, 2542, 2544, 2555, + 2536, 2536, 2534, 2548, 2555, 2543, 2540, 2538, 2543, 2546, + 2539, 2542, 2544, 2547, 2556, 2545, 2543, 2546, 2547, 2547, + 2549, 2549, 2548, 2550, 2550, 2551, 2551, 2552, 2552, 2553, + 2553, 2554, 2557, 2558, 2556, 2559, 2560, 2562, 2562, 2564, + 2563, 2567, 2558, 2563, 2566, 2566, 2569, 2554, 2567, 2568, + 2568, 2569, 2571, 2571, 2572, 2559, 2560, 2564, 2557, 2573, + 2574, 2576, 2578, 2572, 2577, 2577, 2578, 2579, 2573, 2574, + 2580, 2581, 2582, 2584, 2585, 2583, 2579, 2590, 2590, 2576, - 2591, 2589, 2588, 2593, 2594, 2595, 2596, 2596, 2600, 2601, - 2595, 2599, 2602, 2590, 2597, 2601, 2599, 2603, 2603, 2598, - 2605, 2609, 2606, 2607, 2605, 2611, 2600, 2606, 2607, 2608, - 2608, 2610, 2613, 2613, 2615, 2616, 2619, 2602, 2617, 2620, - 2609, 2618, 2617, 2623, 2622, 2611, 2610, 2615, 2616, 2622, - 2618, 2625, 2619, 2624, 2624, 2627, 2627, 2630, 2620, 2628, - 2628, 2632, 2632, 2634, 2635, 2636, 2637, 2639, 2639, 2623, - 2625, 2637, 2640, 2641, 2642, 2644, 2644, 2645, 2630, 2634, - 2635, 2636, 2646, 2646, 2649, 2651, 2652, 2655, 2650, 2659, - 2651, 2645, 2640, 2642, 2650, 2657, 2641, 2653, 2653, 2654, + 2583, 2583, 2581, 2585, 2593, 2589, 2584, 2582, 2594, 2580, + 2589, 2592, 2592, 2595, 2597, 2598, 2601, 2602, 2593, 2603, + 2606, 2608, 2604, 2597, 2610, 2611, 2602, 2598, 2604, 2610, + 2611, 2595, 2606, 2594, 2612, 2612, 2613, 2622, 2615, 2603, + 2623, 2601, 2608, 2615, 0, 2613, 2616, 2616, 2618, 2618, + 2616, 2619, 2619, 2620, 2620, 2621, 2624, 2622, 2627, 2623, + 2626, 2624, 2628, 2627, 2621, 2630, 2626, 2628, 2629, 2629, + 2631, 2632, 2633, 2634, 2635, 2642, 2632, 2636, 2636, 2634, + 2638, 2639, 2640, 2630, 2638, 2643, 2639, 2640, 2641, 2641, + 2633, 2631, 2644, 2648, 2642, 2646, 2646, 2649, 2650, 2635, - 2654, 2656, 2656, 2658, 2649, 2660, 2657, 2655, 2652, 2659, - 2661, 2660, 2658, 2662, 2663, 2664, 2664, 2665, 2666, 2666, - 2665, 2656, 2671, 2670, 2672, 2662, 2673, 2673, 2674, 2661, - 2672, 2674, 2675, 2676, 2663, 2670, 2678, 2680, 2675, 2679, - 2681, 2678, 2671, 2682, 2679, 2685, 2681, 2683, 2683, 2686, - 2687, 2676, 2688, 2689, 2689, 2690, 2680, 2685, 2696, 2691, - 2682, 2682, 2693, 2693, 0, 2688, 2695, 2686, 2691, 2694, - 2694, 2695, 2696, 2697, 2690, 2687, 2698, 2698, 2697, 2699, - 2699, 2700, 2700, 2701, 2703, 2703, 2706, 2708, 2701, 2709, - 2710, 2711, 2711, 2713, 2713, 2715, 2714, 2716, 2717, 2717, + 2643, 2652, 2650, 2653, 2651, 2656, 2648, 2654, 2658, 2655, + 2649, 2663, 2644, 2651, 2655, 2654, 2673, 2652, 2657, 2657, + 2660, 2660, 2653, 2661, 2661, 2665, 2665, 2658, 2667, 2668, + 2669, 2656, 2663, 2670, 2672, 2672, 2673, 2675, 2670, 2674, + 2676, 2677, 2680, 2675, 2667, 2668, 2669, 2684, 2674, 2679, + 2679, 2681, 2681, 2685, 2687, 2690, 2680, 2686, 2694, 2685, + 2677, 2692, 2686, 2676, 2688, 2688, 2696, 2684, 2689, 2689, + 2691, 2691, 2692, 2693, 2695, 2690, 2687, 2697, 2694, 2698, + 2695, 2705, 2693, 2699, 2699, 2696, 2701, 2701, 2700, 2697, + 2691, 2700, 2706, 2705, 2707, 2708, 2708, 2710, 2709, 2698, - 2720, 2719, 2721, 2722, 0, 2706, 2716, 2719, 2722, 2708, - 2714, 2709, 2710, 2725, 2725, 2715, 2727, 2727, 2728, 2729, - 2720, 2721, 2730, 2728, 2731, 2736, 2732, 2734, 2730, 2733, - 2733, 2737, 2734, 2729, 2732, 2738, 2731, 2739, 2740, 2742, - 2738, 2743, 2744, 2745, 2740, 2736, 2746, 2742, 2753, 2739, - 2747, 2737, 2748, 2749, 2750, 2757, 2752, 2761, 2761, 2750, - 2743, 2752, 2744, 2745, 2746, 2754, 2747, 2755, 2753, 2748, - 2748, 2754, 2755, 2758, 2749, 2757, 2762, 2762, 2763, 2767, - 2767, 2773, 2763, 2769, 2769, 2773, 2758, 2770, 2770, 2776, - 2770, 2771, 2771, 2779, 2771, 2772, 2772, 2777, 2772, 2775, + 2707, 2709, 2711, 2710, 2713, 2714, 2715, 2716, 2721, 2713, + 2714, 2717, 2706, 2716, 2718, 2718, 2722, 2725, 2720, 2723, + 2711, 2724, 2724, 0, 2726, 2715, 2721, 2741, 2717, 2717, + 2720, 2731, 2723, 2726, 2728, 2728, 2725, 2729, 2729, 2730, + 2743, 2722, 2732, 2744, 2730, 2731, 2741, 2732, 2733, 2733, + 2734, 2734, 2735, 2735, 2736, 2738, 2738, 2745, 2749, 2736, + 2746, 2746, 2743, 2748, 2748, 2744, 2750, 2751, 2752, 2753, + 2754, 2754, 2757, 2884, 2756, 2758, 2884, 2759, 2753, 2745, + 2756, 2751, 2759, 2766, 2749, 2750, 2762, 2762, 2752, 2764, + 2764, 2765, 2757, 2767, 2758, 2768, 2765, 2766, 2769, 2767, - 2775, 2780, 2785, 2781, 2782, 2782, 2787, 2776, 2781, 2786, - 2787, 2777, 2800, 2779, 2788, 2789, 2786, 2791, 2800, 2792, - 2826, 2780, 2796, 2788, 2793, 2793, 2801, 2785, 2792, 2826, - 2789, 2794, 2794, 2795, 2795, 2791, 2797, 2796, 2798, 2799, - 2802, 2797, 2803, 2804, 2799, 2799, 2806, 2798, 2804, 2805, - 2798, 2801, 2807, 2807, 2805, 2802, 2808, 2878, 2809, 2810, - 2810, 2878, 2808, 2803, 2809, 2806, 2811, 2811, 2812, 2815, - 2815, 2818, 2818, 2812, 2819, 2819, 2820, 2820, 2821, 2821, - 2822, 2822, 2823, 2823, 2824, 2824, 2827, 2827, 2828, 2829, - 2830, 2834, 2832, 2833, 2833, 2835, 2842, 2828, 2837, 2837, + 2770, 2770, 2773, 2771, 2774, 2775, 2769, 2768, 2771, 2776, + 2775, 2777, 2779, 2780, 2781, 2782, 2786, 2777, 2783, 0, + 2779, 2776, 2773, 2784, 2774, 2785, 2787, 2790, 2789, 2794, + 2815, 2787, 2780, 2789, 2781, 2782, 2783, 2786, 2791, 2784, + 2792, 2795, 2785, 2785, 2791, 2792, 2870, 2790, 2815, 2794, + 2798, 2798, 2799, 2799, 2795, 2800, 2804, 2804, 2870, 2800, + 2806, 2806, 2807, 2807, 2810, 2807, 2808, 2808, 2810, 2808, + 2809, 2809, 2812, 2809, 2813, 2814, 2814, 2812, 2816, 2818, + 2819, 2820, 2824, 2813, 2821, 2821, 2820, 2825, 2827, 2826, + 2828, 2830, 2816, 2826, 2825, 2831, 2928, 2827, 2928, 2818, - 2836, 2829, 2838, 2839, 2839, 2844, 2834, 2846, 2835, 2849, - 2830, 2832, 2836, 2843, 2842, 2849, 2843, 2838, 2845, 2845, - 2848, 2850, 2851, 2848, 2852, 2846, 2853, 2851, 2856, 2854, - 2857, 2844, 2860, 2869, 2856, 2850, 2869, 2871, 2876, 2857, - 2872, 2872, 2879, 2852, 2853, 2854, 2877, 2860, 2873, 2873, - 2871, 2874, 2874, 2880, 2882, 2877, 2886, 2883, 2884, 2887, - 2887, 2876, 2879, 2884, 2885, 2888, 2885, 2880, 2883, 2889, - 2891, 2886, 2890, 2892, 2893, 2894, 2896, 2882, 2888, 2895, - 2897, 2902, 2898, 2903, 2894, 2905, 2891, 2898, 2889, 2893, - 2890, 2895, 2904, 2904, 2905, 2902, 2910, 2896, 2892, 2911, + 2819, 2832, 2832, 2835, 2831, 2828, 2840, 2824, 2837, 2830, + 2833, 2833, 2834, 2834, 2836, 2841, 2838, 2837, 2835, 2836, + 2837, 2838, 2838, 2839, 2842, 2845, 0, 2843, 2844, 2839, + 2841, 2840, 2843, 2844, 2846, 2846, 2847, 2848, 2849, 2849, + 2850, 2850, 2847, 2848, 2845, 2842, 2851, 2854, 2854, 2857, + 2857, 2851, 2858, 2858, 2859, 2859, 2860, 2860, 2861, 2861, + 2862, 2862, 2863, 2863, 2864, 2864, 2865, 2867, 2868, 2868, + 2869, 2871, 2874, 2874, 2873, 2875, 2867, 2877, 2883, 2869, + 2879, 2876, 2878, 2878, 2880, 2880, 2885, 2886, 2886, 2877, + 2875, 2871, 2865, 2873, 2876, 2879, 2883, 2887, 2889, 2890, - 2897, 2906, 2906, 2903, 2907, 2907, 2908, 2908, 2909, 2909, - 2912, 2913, 2914, 2912, 2915, 2910, 2913, 2914, 2916, 2911, - 2917, 2918, 2919, 2920, 2921, 2923, 2917, 2924, 2920, 2922, - 2922, 2925, 2925, 2916, 2919, 2918, 2927, 2929, 2935, 2915, - 2923, 2932, 2932, 2936, 2921, 2934, 2924, 2933, 2933, 2936, - 2937, 2927, 2938, 2934, 2939, 2929, 2937, 2935, 2940, 2941, - 2942, 2942, 2943, 2943, 2941, 2945, 2938, 2939, 2946, 2948, - 2949, 2951, 2954, 2952, 2949, 2953, 2955, 2940, 2952, 2956, - 2959, 2959, 2957, 2948, 2962, 2954, 2945, 2957, 2946, 2955, - 2958, 2951, 2963, 2964, 2953, 2958, 2965, 2965, 2956, 2972, + 2891, 2889, 2892, 2893, 2895, 2890, 2894, 2892, 2898, 0, + 2897, 2901, 2885, 2911, 2891, 2887, 2897, 2898, 2911, 2914, + 2895, 2919, 2893, 2921, 2894, 2912, 2901, 2921, 2912, 2915, + 2915, 2920, 2914, 2916, 2916, 2917, 2917, 2922, 2923, 2925, + 2920, 2927, 2926, 2929, 2919, 2932, 2927, 2930, 2930, 2933, + 2931, 2935, 2923, 2926, 2934, 2941, 2936, 2922, 2929, 2937, + 2938, 2939, 2925, 2931, 2932, 2940, 2940, 2933, 2937, 2942, + 2934, 2936, 2938, 2946, 2942, 2941, 2935, 2947, 2948, 2948, + 2949, 2954, 2939, 2950, 2950, 2951, 2951, 2946, 2955, 2949, + 2952, 2952, 2953, 2953, 2957, 2956, 2958, 2947, 2956, 2957, - 2966, 2967, 2968, 2968, 2962, 2966, 2969, 2967, 2970, 2971, - 2963, 2969, 2964, 2970, 2971, 2973, 2975, 2975, 2972, 2976, - 2980, 2973, 2977, 2977, 2976, 2979, 2981, 2982, 2983, 2979, - 2984, 2985, 2986, 2981, 2988, 2988, 2984, 2990, 2990, 2980, - 2991, 2993, 2994, 2992, 2995, 2986, 2982, 2983, 2992, 2991, - 2985, 2997, 2991, 2996, 2996, 2998, 2997, 2995, 3000, 3002, - 2993, 2994, 3001, 3001, 3003, 3003, 3004, 3004, 2998, 3005, - 3006, 3007, 3008, 3008, 3005, 3009, 3014, 3006, 3002, 3010, - 3009, 3010, 3011, 3011, 3000, 3012, 3013, 3016, 3019, 3015, - 3007, 3023, 3012, 3013, 3015, 3014, 3018, 3018, 3021, 3022, + 2954, 2958, 2959, 2960, 2961, 2962, 2964, 2968, 2955, 2963, + 2961, 2964, 2965, 2967, 2967, 2969, 2970, 2970, 2960, 2962, + 2972, 2963, 2968, 2974, 2977, 2977, 2980, 2959, 2978, 2978, + 2979, 2981, 2965, 2982, 2969, 2972, 2983, 2981, 2979, 2982, + 2984, 2974, 2985, 2986, 2990, 2980, 2987, 2987, 2986, 2991, + 2983, 2988, 2988, 2984, 2993, 2994, 2996, 2997, 2998, 2994, + 2999, 2985, 2997, 3001, 3007, 2990, 3000, 3002, 2993, 2991, + 3003, 3008, 3002, 2999, 3009, 3003, 2996, 2998, 3011, 3000, + 3004, 3004, 3001, 3011, 3007, 3010, 3010, 3014, 3012, 3008, + 3013, 3013, 3014, 3009, 3012, 3015, 3016, 3017, 3018, 3025, - 3024, 3025, 3025, 3021, 3022, 3028, 3016, 3019, 3027, 3027, - 3023, 3029, 3030, 3030, 3031, 3031, 3032, 3034, 3034, 3024, - 3035, 3035, 3036, 3032, 3028, 3042, 3038, 3041, 3043, 3036, - 3029, 3038, 3041, 3044, 3044, 3045, 3045, 0, 0, 0, - 0, 0, 0, 0, 3042, 0, 0, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3050, 3050, 3050, 3050, 3050, - 3050, 3050, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3052, - 3052, 3052, 3052, 3052, 3052, 3052, 3053, 3053, 3053, 3053, - 3053, 3053, 3053, 3055, 3055, 0, 3055, 3055, 3055, 3055, - 3056, 3056, 0, 0, 0, 3056, 3056, 3057, 3057, 0, + 3015, 3016, 3020, 3020, 3018, 3021, 3022, 3022, 3024, 3027, + 3021, 3028, 3024, 3026, 3030, 3029, 3017, 3036, 3025, 3031, + 3026, 3029, 3033, 3033, 3035, 3035, 3036, 3038, 3027, 3036, + 3028, 3037, 3031, 3030, 3039, 3040, 3037, 3041, 3041, 3042, + 3045, 3043, 3046, 3046, 3042, 3047, 3038, 0, 3040, 3048, + 3048, 3049, 3049, 3039, 3043, 3050, 3051, 3052, 3053, 3053, + 3050, 0, 3054, 3051, 3047, 3059, 3045, 3054, 3055, 3061, + 3055, 3056, 3056, 3057, 3058, 3064, 3052, 3060, 3063, 3063, + 3057, 3058, 3060, 3068, 3059, 3066, 3067, 3069, 3061, 3073, + 3066, 3067, 3070, 3070, 3064, 3072, 3072, 3074, 3075, 3075, - 0, 3057, 0, 3057, 3058, 0, 0, 0, 0, 0, - 3058, 3059, 3059, 0, 0, 0, 3059, 3059, 3060, 0, - 0, 0, 0, 0, 3060, 3061, 3061, 0, 3061, 3061, - 3061, 3061, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048 + 3076, 3076, 3068, 3077, 3079, 3079, 3069, 3081, 3073, 3087, + 3077, 3080, 3080, 3083, 3081, 3086, 3074, 3088, 3083, 0, + 3086, 3089, 3089, 3090, 3090, 0, 0, 0, 3087, 0, + 0, 0, 0, 0, 0, 0, 3088, 3094, 3094, 3094, + 3094, 3094, 3094, 3094, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3097, 3097, + 3097, 3097, 3097, 3097, 3097, 3098, 3098, 3098, 3098, 3098, + 3098, 3098, 3100, 3100, 0, 3100, 3100, 3100, 3100, 3101, + 3101, 0, 0, 0, 3101, 3101, 3102, 3102, 0, 0, + 3102, 0, 3102, 3103, 0, 0, 0, 0, 0, 3103, + + 3104, 3104, 0, 0, 0, 3104, 3104, 3105, 0, 0, + 0, 0, 0, 3105, 3106, 3106, 0, 3106, 3106, 3106, + 3106, 3107, 3107, 0, 3107, 3107, 3107, 3107, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093 } ; static yy_state_type yy_last_accepting_state; @@ -2942,7 +2978,7 @@ static void config_end_include(void) } #endif -#line 2943 "" +#line 2980 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2951,9 +2987,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2952 "" +#line 2989 "" -#line 2954 "" +#line 2991 "" #define INITIAL 0 #define quotedstring 1 @@ -3175,7 +3211,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3176 "" +#line 3213 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3208,13 +3244,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 >= 3049 ) + if ( yy_current_state >= 3094 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 5940 ); + while ( yy_base[yy_current_state] != 6029 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4615,123 +4651,143 @@ YY_RULE_SETUP case 273: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 274: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 290: -/* rule 290 can match eol */ YY_RULE_SETUP #line 508 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V4) } + YY_BREAK +case 291: +YY_RULE_SETUP +#line 509 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V6) } + YY_BREAK +case 292: +YY_RULE_SETUP +#line 510 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 293: +YY_RULE_SETUP +#line 511 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 294: +/* rule 294 can match eol */ +YY_RULE_SETUP +#line 512 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 291: +case 295: YY_RULE_SETUP -#line 511 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 512 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 292: +case 296: YY_RULE_SETUP -#line 517 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 293: -/* rule 293 can match eol */ +case 297: +/* rule 297 can match eol */ YY_RULE_SETUP -#line 518 "./util/configlexer.lex" +#line 522 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 294: +case 298: YY_RULE_SETUP -#line 520 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4744,34 +4800,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 295: +case 299: YY_RULE_SETUP -#line 532 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 533 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 296: +case 300: YY_RULE_SETUP -#line 538 "./util/configlexer.lex" +#line 542 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 297: -/* rule 297 can match eol */ +case 301: +/* rule 301 can match eol */ YY_RULE_SETUP -#line 539 "./util/configlexer.lex" +#line 543 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 298: +case 302: YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 545 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4784,38 +4840,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 299: +case 303: YY_RULE_SETUP -#line 553 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 555 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 300: +case 304: YY_RULE_SETUP -#line 559 "./util/configlexer.lex" +#line 563 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 301: -/* rule 301 can match eol */ +case 305: +/* rule 305 can match eol */ YY_RULE_SETUP -#line 560 "./util/configlexer.lex" +#line 564 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 302: +case 306: YY_RULE_SETUP -#line 561 "./util/configlexer.lex" +#line 565 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 303: +case 307: YY_RULE_SETUP -#line 562 "./util/configlexer.lex" +#line 566 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4823,27 +4879,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 567 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 304: +case 308: YY_RULE_SETUP -#line 571 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 305: -/* rule 305 can match eol */ +case 309: +/* rule 309 can match eol */ YY_RULE_SETUP -#line 572 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 306: +case 310: YY_RULE_SETUP -#line 574 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4853,7 +4909,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 580 "./util/configlexer.lex" +#line 584 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4865,33 +4921,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 307: +case 311: YY_RULE_SETUP -#line 591 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 308: +case 312: YY_RULE_SETUP -#line 595 "./util/configlexer.lex" +#line 599 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 309: +case 313: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 310: +case 314: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4892 "" +#line 4949 "" case YY_END_OF_BUFFER: { @@ -5186,7 +5242,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 >= 3049 ) + if ( yy_current_state >= 3094 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5214,11 +5270,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 >= 3049 ) + if ( yy_current_state >= 3094 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3048); + yy_is_jam = (yy_current_state == 3093); return yy_is_jam ? 0 : yy_current_state; } @@ -5857,6 +5913,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 603 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index e4baf13f9..5200a5f2f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -488,6 +488,10 @@ dnscrypt-shared-secret-cache-slabs{COLON} { YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } dnscrypt-nonce-cache-size{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } dnscrypt-nonce-cache-slabs{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +pad-responses{COLON} { YDVAR(1, VAR_PAD_RESPONSES) } +pad-responses-block-size{COLON} { YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +pad-queries{COLON} { YDVAR(1, VAR_PAD_QUERIES) } +pad-queries-block-size{COLON} { YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } ipsecmod-enabled{COLON} { YDVAR(1, VAR_IPSECMOD_ENABLED) } ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } diff --git a/util/configparser.c b/util/configparser.c index 657f99579..6f3e29eea 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,73 +1,23 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* original parser id follows */ +/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ -/* Bison implementation for Yacc-like parsers in C +#define YYBYACC 1 +#define YYMAJOR 1 +#define YYMINOR 9 +#define YYPATCH 20140715 - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. +#define YYEMPTY (-1) +#define yyclearin (yychar = YYEMPTY) +#define yyerrok (yyerrflag = 0) +#define YYRECOVERING() (yyerrflag != 0) +#define YYENOMEM (-2) +#define YYEOF 0 +#define YYPREFIX "yy" - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.4.1" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ #define YYPURE 0 -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* First part of user prologue. */ -#line 38 "./util/configparser.y" - +#line 39 "./util/configparser.y" #include "config.h" #include @@ -94,6531 +44,1751 @@ extern struct config_parser_state* cfg_parser; #define OUTYY(s) #endif - -#line 99 "util/configparser.c" - -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506, - VAR_FOR_UPSTREAM = 507, - VAR_AUTH_ZONE = 508, - VAR_ZONEFILE = 509, - VAR_MASTER = 510, - VAR_URL = 511, - VAR_FOR_DOWNSTREAM = 512, - VAR_FALLBACK_ENABLED = 513, - VAR_TLS_ADDITIONAL_PORT = 514, - VAR_LOW_RTT = 515, - VAR_LOW_RTT_PERMIL = 516, - VAR_FAST_SERVER_PERMIL = 517, - VAR_FAST_SERVER_NUM = 518, - VAR_ALLOW_NOTIFY = 519, - VAR_TLS_WIN_CERT = 520, - VAR_TCP_CONNECTION_LIMIT = 521, - VAR_FORWARD_NO_CACHE = 522, - VAR_STUB_NO_CACHE = 523, - VAR_LOG_SERVFAIL = 524, - VAR_DENY_ANY = 525, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 526, - VAR_LOG_TAG_QUERYREPLY = 527, - VAR_STREAM_WAIT_SIZE = 528, - VAR_TLS_CIPHERS = 529, - VAR_TLS_CIPHERSUITES = 530, - VAR_IPSET = 531, - VAR_IPSET_NAME_V4 = 532, - VAR_IPSET_NAME_V6 = 533, - VAR_TLS_SESSION_TICKET_KEYS = 534, - VAR_RPZ = 535, - VAR_TAGS = 536, - VAR_RPZ_ACTION_OVERRIDE = 537, - VAR_RPZ_CNAME_OVERRIDE = 538, - VAR_RPZ_LOG = 539, - VAR_RPZ_LOG_NAME = 540 - }; -#endif -/* Tokens. */ -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506 -#define VAR_FOR_UPSTREAM 507 -#define VAR_AUTH_ZONE 508 -#define VAR_ZONEFILE 509 -#define VAR_MASTER 510 -#define VAR_URL 511 -#define VAR_FOR_DOWNSTREAM 512 -#define VAR_FALLBACK_ENABLED 513 -#define VAR_TLS_ADDITIONAL_PORT 514 -#define VAR_LOW_RTT 515 -#define VAR_LOW_RTT_PERMIL 516 -#define VAR_FAST_SERVER_PERMIL 517 -#define VAR_FAST_SERVER_NUM 518 -#define VAR_ALLOW_NOTIFY 519 -#define VAR_TLS_WIN_CERT 520 -#define VAR_TCP_CONNECTION_LIMIT 521 -#define VAR_FORWARD_NO_CACHE 522 -#define VAR_STUB_NO_CACHE 523 -#define VAR_LOG_SERVFAIL 524 -#define VAR_DENY_ANY 525 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526 -#define VAR_LOG_TAG_QUERYREPLY 527 -#define VAR_STREAM_WAIT_SIZE 528 -#define VAR_TLS_CIPHERS 529 -#define VAR_TLS_CIPHERSUITES 530 -#define VAR_IPSET 531 -#define VAR_IPSET_NAME_V4 532 -#define VAR_IPSET_NAME_V6 533 -#define VAR_TLS_SESSION_TICKET_KEYS 534 -#define VAR_RPZ 535 -#define VAR_TAGS 536 -#define VAR_RPZ_ACTION_OVERRIDE 537 -#define VAR_RPZ_CNAME_OVERRIDE 538 -#define VAR_RPZ_LOG 539 -#define VAR_RPZ_LOG_NAME 540 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ #line 66 "./util/configparser.y" - +#ifdef YYSTYPE +#undef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 +#endif +#ifndef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 +typedef union { char* str; +} YYSTYPE; +#endif /* !YYSTYPE_IS_DECLARED */ +#line 59 "util/configparser.c" -#line 716 "util/configparser.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ - - - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t +/* compatibility with bison */ +#ifdef YYPARSE_PARAM +/* compatibility with FreeBSD */ +# ifdef YYPARSE_PARAM_TYPE +# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) # else -# define YYSIZE_T unsigned +# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) # endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YYPARSE_DECL() yyparse(void) #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Parameters sent to lex. */ +#ifdef YYLEX_PARAM +# define YYLEX_DECL() yylex(void *YYLEX_PARAM) +# define YYLEX yylex(YYLEX_PARAM) #else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ +# define YYLEX_DECL() yylex(void) +# define YYLEX yylex() #endif +/* Parameters sent to yyerror. */ +#ifndef YYERROR_DECL +#define YYERROR_DECL() yyerror(const char *s) +#endif +#ifndef YYERROR_CALL +#define YYERROR_CALL(msg) yyerror(msg) +#endif -#define YY_ASSERT(E) ((void) (0 && (E))) +extern int YYPARSE_DECL(); -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; +#define SPACE 257 +#define LETTER 258 +#define NEWLINE 259 +#define COMMENT 260 +#define COLON 261 +#define ANY 262 +#define ZONESTR 263 +#define STRING_ARG 264 +#define VAR_SERVER 265 +#define VAR_VERBOSITY 266 +#define VAR_NUM_THREADS 267 +#define VAR_PORT 268 +#define VAR_OUTGOING_RANGE 269 +#define VAR_INTERFACE 270 +#define VAR_PREFER_IP4 271 +#define VAR_DO_IP4 272 +#define VAR_DO_IP6 273 +#define VAR_PREFER_IP6 274 +#define VAR_DO_UDP 275 +#define VAR_DO_TCP 276 +#define VAR_TCP_MSS 277 +#define VAR_OUTGOING_TCP_MSS 278 +#define VAR_TCP_IDLE_TIMEOUT 279 +#define VAR_EDNS_TCP_KEEPALIVE 280 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 281 +#define VAR_CHROOT 282 +#define VAR_USERNAME 283 +#define VAR_DIRECTORY 284 +#define VAR_LOGFILE 285 +#define VAR_PIDFILE 286 +#define VAR_MSG_CACHE_SIZE 287 +#define VAR_MSG_CACHE_SLABS 288 +#define VAR_NUM_QUERIES_PER_THREAD 289 +#define VAR_RRSET_CACHE_SIZE 290 +#define VAR_RRSET_CACHE_SLABS 291 +#define VAR_OUTGOING_NUM_TCP 292 +#define VAR_INFRA_HOST_TTL 293 +#define VAR_INFRA_LAME_TTL 294 +#define VAR_INFRA_CACHE_SLABS 295 +#define VAR_INFRA_CACHE_NUMHOSTS 296 +#define VAR_INFRA_CACHE_LAME_SIZE 297 +#define VAR_NAME 298 +#define VAR_STUB_ZONE 299 +#define VAR_STUB_HOST 300 +#define VAR_STUB_ADDR 301 +#define VAR_TARGET_FETCH_POLICY 302 +#define VAR_HARDEN_SHORT_BUFSIZE 303 +#define VAR_HARDEN_LARGE_QUERIES 304 +#define VAR_FORWARD_ZONE 305 +#define VAR_FORWARD_HOST 306 +#define VAR_FORWARD_ADDR 307 +#define VAR_DO_NOT_QUERY_ADDRESS 308 +#define VAR_HIDE_IDENTITY 309 +#define VAR_HIDE_VERSION 310 +#define VAR_IDENTITY 311 +#define VAR_VERSION 312 +#define VAR_HARDEN_GLUE 313 +#define VAR_MODULE_CONF 314 +#define VAR_TRUST_ANCHOR_FILE 315 +#define VAR_TRUST_ANCHOR 316 +#define VAR_VAL_OVERRIDE_DATE 317 +#define VAR_BOGUS_TTL 318 +#define VAR_VAL_CLEAN_ADDITIONAL 319 +#define VAR_VAL_PERMISSIVE_MODE 320 +#define VAR_INCOMING_NUM_TCP 321 +#define VAR_MSG_BUFFER_SIZE 322 +#define VAR_KEY_CACHE_SIZE 323 +#define VAR_KEY_CACHE_SLABS 324 +#define VAR_TRUSTED_KEYS_FILE 325 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 326 +#define VAR_USE_SYSLOG 327 +#define VAR_OUTGOING_INTERFACE 328 +#define VAR_ROOT_HINTS 329 +#define VAR_DO_NOT_QUERY_LOCALHOST 330 +#define VAR_CACHE_MAX_TTL 331 +#define VAR_HARDEN_DNSSEC_STRIPPED 332 +#define VAR_ACCESS_CONTROL 333 +#define VAR_LOCAL_ZONE 334 +#define VAR_LOCAL_DATA 335 +#define VAR_INTERFACE_AUTOMATIC 336 +#define VAR_STATISTICS_INTERVAL 337 +#define VAR_DO_DAEMONIZE 338 +#define VAR_USE_CAPS_FOR_ID 339 +#define VAR_STATISTICS_CUMULATIVE 340 +#define VAR_OUTGOING_PORT_PERMIT 341 +#define VAR_OUTGOING_PORT_AVOID 342 +#define VAR_DLV_ANCHOR_FILE 343 +#define VAR_DLV_ANCHOR 344 +#define VAR_NEG_CACHE_SIZE 345 +#define VAR_HARDEN_REFERRAL_PATH 346 +#define VAR_PRIVATE_ADDRESS 347 +#define VAR_PRIVATE_DOMAIN 348 +#define VAR_REMOTE_CONTROL 349 +#define VAR_CONTROL_ENABLE 350 +#define VAR_CONTROL_INTERFACE 351 +#define VAR_CONTROL_PORT 352 +#define VAR_SERVER_KEY_FILE 353 +#define VAR_SERVER_CERT_FILE 354 +#define VAR_CONTROL_KEY_FILE 355 +#define VAR_CONTROL_CERT_FILE 356 +#define VAR_CONTROL_USE_CERT 357 +#define VAR_EXTENDED_STATISTICS 358 +#define VAR_LOCAL_DATA_PTR 359 +#define VAR_JOSTLE_TIMEOUT 360 +#define VAR_STUB_PRIME 361 +#define VAR_UNWANTED_REPLY_THRESHOLD 362 +#define VAR_LOG_TIME_ASCII 363 +#define VAR_DOMAIN_INSECURE 364 +#define VAR_PYTHON 365 +#define VAR_PYTHON_SCRIPT 366 +#define VAR_VAL_SIG_SKEW_MIN 367 +#define VAR_VAL_SIG_SKEW_MAX 368 +#define VAR_CACHE_MIN_TTL 369 +#define VAR_VAL_LOG_LEVEL 370 +#define VAR_AUTO_TRUST_ANCHOR_FILE 371 +#define VAR_KEEP_MISSING 372 +#define VAR_ADD_HOLDDOWN 373 +#define VAR_DEL_HOLDDOWN 374 +#define VAR_SO_RCVBUF 375 +#define VAR_EDNS_BUFFER_SIZE 376 +#define VAR_PREFETCH 377 +#define VAR_PREFETCH_KEY 378 +#define VAR_SO_SNDBUF 379 +#define VAR_SO_REUSEPORT 380 +#define VAR_HARDEN_BELOW_NXDOMAIN 381 +#define VAR_IGNORE_CD_FLAG 382 +#define VAR_LOG_QUERIES 383 +#define VAR_LOG_REPLIES 384 +#define VAR_LOG_LOCAL_ACTIONS 385 +#define VAR_TCP_UPSTREAM 386 +#define VAR_SSL_UPSTREAM 387 +#define VAR_SSL_SERVICE_KEY 388 +#define VAR_SSL_SERVICE_PEM 389 +#define VAR_SSL_PORT 390 +#define VAR_FORWARD_FIRST 391 +#define VAR_STUB_SSL_UPSTREAM 392 +#define VAR_FORWARD_SSL_UPSTREAM 393 +#define VAR_TLS_CERT_BUNDLE 394 +#define VAR_STUB_FIRST 395 +#define VAR_MINIMAL_RESPONSES 396 +#define VAR_RRSET_ROUNDROBIN 397 +#define VAR_MAX_UDP_SIZE 398 +#define VAR_DELAY_CLOSE 399 +#define VAR_UNBLOCK_LAN_ZONES 400 +#define VAR_INSECURE_LAN_ZONES 401 +#define VAR_INFRA_CACHE_MIN_RTT 402 +#define VAR_DNS64_PREFIX 403 +#define VAR_DNS64_SYNTHALL 404 +#define VAR_DNS64_IGNORE_AAAA 405 +#define VAR_DNSTAP 406 +#define VAR_DNSTAP_ENABLE 407 +#define VAR_DNSTAP_SOCKET_PATH 408 +#define VAR_DNSTAP_IP 409 +#define VAR_DNSTAP_TLS 410 +#define VAR_DNSTAP_TLS_SERVER_NAME 411 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 412 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 413 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 414 +#define VAR_DNSTAP_SEND_IDENTITY 415 +#define VAR_DNSTAP_SEND_VERSION 416 +#define VAR_DNSTAP_IDENTITY 417 +#define VAR_DNSTAP_VERSION 418 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 419 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 420 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 424 +#define VAR_RESPONSE_IP_TAG 425 +#define VAR_RESPONSE_IP 426 +#define VAR_RESPONSE_IP_DATA 427 +#define VAR_HARDEN_ALGO_DOWNGRADE 428 +#define VAR_IP_TRANSPARENT 429 +#define VAR_IP_DSCP 430 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 431 +#define VAR_IP_RATELIMIT 432 +#define VAR_IP_RATELIMIT_SLABS 433 +#define VAR_IP_RATELIMIT_SIZE 434 +#define VAR_RATELIMIT 435 +#define VAR_RATELIMIT_SLABS 436 +#define VAR_RATELIMIT_SIZE 437 +#define VAR_RATELIMIT_FOR_DOMAIN 438 +#define VAR_RATELIMIT_BELOW_DOMAIN 439 +#define VAR_IP_RATELIMIT_FACTOR 440 +#define VAR_RATELIMIT_FACTOR 441 +#define VAR_SEND_CLIENT_SUBNET 442 +#define VAR_CLIENT_SUBNET_ZONE 443 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444 +#define VAR_CLIENT_SUBNET_OPCODE 445 +#define VAR_MAX_CLIENT_SUBNET_IPV4 446 +#define VAR_MAX_CLIENT_SUBNET_IPV6 447 +#define VAR_MIN_CLIENT_SUBNET_IPV4 448 +#define VAR_MIN_CLIENT_SUBNET_IPV6 449 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 450 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 451 +#define VAR_CAPS_WHITELIST 452 +#define VAR_CACHE_MAX_NEGATIVE_TTL 453 +#define VAR_PERMIT_SMALL_HOLDDOWN 454 +#define VAR_QNAME_MINIMISATION 455 +#define VAR_QNAME_MINIMISATION_STRICT 456 +#define VAR_IP_FREEBIND 457 +#define VAR_DEFINE_TAG 458 +#define VAR_LOCAL_ZONE_TAG 459 +#define VAR_ACCESS_CONTROL_TAG 460 +#define VAR_LOCAL_ZONE_OVERRIDE 461 +#define VAR_ACCESS_CONTROL_TAG_ACTION 462 +#define VAR_ACCESS_CONTROL_TAG_DATA 463 +#define VAR_VIEW 464 +#define VAR_ACCESS_CONTROL_VIEW 465 +#define VAR_VIEW_FIRST 466 +#define VAR_SERVE_EXPIRED 467 +#define VAR_SERVE_EXPIRED_TTL 468 +#define VAR_SERVE_EXPIRED_TTL_RESET 469 +#define VAR_SERVE_EXPIRED_REPLY_TTL 470 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471 +#define VAR_FAKE_DSA 472 +#define VAR_FAKE_SHA1 473 +#define VAR_LOG_IDENTITY 474 +#define VAR_HIDE_TRUSTANCHOR 475 +#define VAR_TRUST_ANCHOR_SIGNALING 476 +#define VAR_AGGRESSIVE_NSEC 477 +#define VAR_USE_SYSTEMD 478 +#define VAR_SHM_ENABLE 479 +#define VAR_SHM_KEY 480 +#define VAR_ROOT_KEY_SENTINEL 481 +#define VAR_DNSCRYPT 482 +#define VAR_DNSCRYPT_ENABLE 483 +#define VAR_DNSCRYPT_PORT 484 +#define VAR_DNSCRYPT_PROVIDER 485 +#define VAR_DNSCRYPT_SECRET_KEY 486 +#define VAR_DNSCRYPT_PROVIDER_CERT 487 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492 +#define VAR_PAD_RESPONSES 493 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 494 +#define VAR_PAD_QUERIES 495 +#define VAR_PAD_QUERIES_BLOCK_SIZE 496 +#define VAR_IPSECMOD_ENABLED 497 +#define VAR_IPSECMOD_HOOK 498 +#define VAR_IPSECMOD_IGNORE_BOGUS 499 +#define VAR_IPSECMOD_MAX_TTL 500 +#define VAR_IPSECMOD_WHITELIST 501 +#define VAR_IPSECMOD_STRICT 502 +#define VAR_CACHEDB 503 +#define VAR_CACHEDB_BACKEND 504 +#define VAR_CACHEDB_SECRETSEED 505 +#define VAR_CACHEDB_REDISHOST 506 +#define VAR_CACHEDB_REDISPORT 507 +#define VAR_CACHEDB_REDISTIMEOUT 508 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 509 +#define VAR_FOR_UPSTREAM 510 +#define VAR_AUTH_ZONE 511 +#define VAR_ZONEFILE 512 +#define VAR_MASTER 513 +#define VAR_URL 514 +#define VAR_FOR_DOWNSTREAM 515 +#define VAR_FALLBACK_ENABLED 516 +#define VAR_TLS_ADDITIONAL_PORT 517 +#define VAR_LOW_RTT 518 +#define VAR_LOW_RTT_PERMIL 519 +#define VAR_FAST_SERVER_PERMIL 520 +#define VAR_FAST_SERVER_NUM 521 +#define VAR_ALLOW_NOTIFY 522 +#define VAR_TLS_WIN_CERT 523 +#define VAR_TCP_CONNECTION_LIMIT 524 +#define VAR_FORWARD_NO_CACHE 525 +#define VAR_STUB_NO_CACHE 526 +#define VAR_LOG_SERVFAIL 527 +#define VAR_DENY_ANY 528 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 529 +#define VAR_LOG_TAG_QUERYREPLY 530 +#define VAR_STREAM_WAIT_SIZE 531 +#define VAR_TLS_CIPHERS 532 +#define VAR_TLS_CIPHERSUITES 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define YYERRCODE 256 +typedef short YYINT; +static const YYINT yylhs[] = { -1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 3, 3, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 4, 5, 5, 220, 220, 220, 220, 220, 220, 220, + 6, 7, 7, 228, 228, 228, 228, 228, 228, 14, + 15, 15, 235, 235, 235, 235, 235, 235, 235, 22, + 23, 23, 243, 243, 243, 243, 243, 243, 243, 243, + 252, 253, 254, 255, 256, 24, 25, 25, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 27, 28, + 91, 94, 103, 191, 192, 29, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 42, 82, 30, 95, + 96, 53, 75, 90, 31, 32, 35, 36, 33, 34, + 37, 38, 39, 40, 41, 126, 203, 127, 129, 130, + 131, 205, 210, 206, 217, 218, 219, 187, 92, 81, + 107, 124, 125, 215, 212, 128, 43, 44, 45, 46, + 47, 83, 97, 98, 113, 69, 79, 70, 195, 196, + 108, 63, 64, 194, 65, 66, 117, 121, 135, 144, + 170, 147, 216, 118, 76, 48, 49, 50, 105, 136, + 137, 138, 51, 52, 54, 55, 57, 58, 56, 142, + 59, 60, 61, 67, 86, 122, 100, 143, 93, 166, + 101, 102, 119, 120, 213, 106, 62, 84, 87, 68, + 71, 109, 110, 85, 167, 111, 72, 73, 74, 204, + 123, 180, 181, 182, 183, 184, 185, 193, 112, 80, + 114, 115, 116, 168, 77, 78, 99, 88, 89, 104, + 132, 133, 214, 134, 139, 140, 141, 171, 172, 174, + 176, 177, 175, 178, 188, 145, 146, 150, 151, 148, + 149, 152, 153, 155, 154, 207, 209, 208, 169, 179, + 258, 259, 260, 261, 197, 199, 198, 200, 201, 202, + 221, 222, 223, 225, 226, 227, 224, 229, 230, 231, + 232, 233, 234, 244, 245, 246, 247, 251, 248, 249, + 250, 236, 237, 240, 241, 238, 242, 239, 10, 11, + 11, 262, 262, 262, 262, 262, 262, 262, 262, 263, + 265, 264, 270, 266, 267, 268, 269, 12, 13, 13, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 8, 9, 9, 290, + 291, 173, 186, 189, 190, 16, 17, 17, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 293, 294, + 295, 297, 298, 296, 299, 300, 301, 302, 18, 19, + 19, 303, 303, 303, 303, 303, 304, 305, 306, 307, + 308, 211, 20, 21, 21, 309, 309, 310, 311, }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 606 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 286 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 309 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 596 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 887 - -#define YYUNDEFTOK 2 -#define YYMAXUTOK 540 - -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_uint16 yytranslate[] = -{ - 0, 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, 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, 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, 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, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 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, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 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, 216, 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, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285 +static const YYINT yylen[] = { 2, + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 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, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 4, 4, 4, 3, 3, 2, 2, 2, 2, 2, + 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2, }; - +static const YYINT yydefred[] = { 1, + 0, 15, 211, 221, 489, 547, 508, 230, 556, 579, + 240, 593, 256, 2, 17, 213, 223, 549, 491, 510, + 232, 558, 581, 595, 242, 258, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 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, 0, 0, 0, 0, 0, + 0, 0, 212, 214, 215, 216, 217, 218, 219, 220, + 0, 0, 0, 0, 0, 0, 222, 224, 225, 226, + 227, 228, 229, 0, 548, 550, 0, 0, 0, 0, + 0, 0, 0, 0, 490, 492, 493, 494, 495, 496, + 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 509, 511, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 0, 0, 0, 0, 0, 0, 0, 231, 233, 234, + 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 557, 559, 560, 561, 562, + 563, 564, 565, 566, 567, 568, 0, 0, 0, 0, + 0, 580, 582, 583, 584, 585, 586, 0, 0, 594, + 596, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 243, 244, 245, 246, 247, 248, 249, 250, 0, + 0, 0, 0, 0, 259, 260, 262, 263, 264, 261, + 265, 266, 267, 268, 257, 270, 269, 276, 289, 287, + 299, 295, 296, 300, 297, 298, 301, 302, 303, 304, + 305, 327, 328, 329, 330, 331, 356, 357, 358, 363, + 364, 292, 365, 366, 369, 367, 368, 371, 372, 373, + 387, 342, 343, 345, 346, 374, 390, 336, 338, 391, + 397, 398, 399, 293, 355, 415, 416, 337, 410, 320, + 288, 332, 388, 394, 375, 0, 0, 419, 294, 271, + 319, 379, 272, 290, 291, 333, 334, 417, 377, 381, + 382, 273, 420, 359, 386, 321, 341, 392, 393, 396, + 409, 335, 413, 411, 412, 347, 354, 383, 384, 348, + 349, 376, 401, 322, 323, 326, 306, 308, 309, 310, + 311, 312, 421, 422, 424, 360, 361, 362, 370, 425, + 426, 427, 0, 0, 0, 378, 350, 352, 552, 436, + 440, 438, 437, 441, 439, 0, 0, 444, 445, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 380, + 395, 414, 449, 450, 351, 428, 0, 0, 0, 0, + 0, 0, 402, 403, 404, 405, 406, 407, 408, 553, + 344, 339, 400, 318, 274, 275, 340, 455, 457, 456, + 458, 459, 460, 307, 314, 446, 448, 447, 313, 0, + 325, 385, 423, 324, 353, 315, 316, 317, 461, 462, + 463, 467, 466, 464, 465, 468, 469, 470, 471, 473, + 472, 551, 500, 502, 501, 504, 505, 506, 507, 503, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 482, 0, + 486, 487, 0, 0, 488, 569, 570, 571, 574, 572, + 573, 575, 576, 577, 578, 587, 588, 589, 590, 591, + 598, 599, 474, 480, 475, 476, 477, 479, 481, 478, + 251, 252, 253, 254, 255, 389, 418, 435, 554, 555, + 442, 443, 429, 430, 0, 0, 0, 434, 592, 483, + 484, 485, 433, 431, 432, +}; +static const YYINT yydgoto[] = { 1, + 14, 15, 27, 16, 28, 17, 29, 18, 30, 19, + 31, 20, 32, 21, 33, 22, 34, 23, 35, 24, + 36, 25, 37, 26, 38, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 433, + 434, 435, 436, 437, 438, 439, 440, 447, 448, 449, + 450, 451, 452, 453, 518, 519, 520, 521, 522, 523, + 524, 525, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 590, 591, 592, 593, 594, 595, 0, 0, 0, + 0, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 509, 510, 455, + 456, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 552, 553, 554, 555, 556, 557, 560, 561, + 562, +}; +static const YYINT yysindex[] = { 0, + -248, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 369, -290, -280, -357, + -322, -335, -298, -445, -485, -529, -240, -293, -252, -239, + -216, -215, -214, -212, -211, -210, -209, -208, -205, -204, + -202, -201, -200, -199, -198, -197, -196, -195, -194, -174, + -173, -172, -167, -166, -165, -164, -161, -160, -158, -157, + -156, -155, -154, -152, -150, -149, -148, -146, -145, -144, + -143, -142, -141, -140, -139, -138, -137, -134, -133, -132, + -131, -130, -129, -128, -127, -126, -125, -124, -123, -122, + -121, -120, -119, -118, -117, -116, -115, -114, -113, -112, + -111, -110, -109, -108, -107, -105, -104, -103, -102, -101, + -100, -99, -98, -97, -95, -94, -93, -92, -91, -90, + -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, + -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, + -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, + -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, + -49, -47, -46, -42, -41, -40, -39, -38, -37, -36, + -34, -33, -32, -31, -29, -27, -26, -25, -24, -23, + -22, -21, -20, -13, -12, -11, -10, -8, -7, -6, + -5, -4, -3, -2, 7, 19, 20, 21, 23, 24, + 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 40, 41, 46, 47, 52, 53, 58, 59, 60, 61, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, + 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, + 0, 0, 0, 76, 0, 0, 77, 78, 79, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 90, 91, 92, 106, 107, 108, + 109, 110, 111, 112, 113, 118, 119, 120, 121, 122, + 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 124, 125, 126, 127, 132, 133, 138, 0, 0, 0, + 0, 0, 0, 0, 0, 139, 140, 141, 142, 147, + 148, 149, 150, 151, 152, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 159, 160, + 161, 0, 0, 0, 0, 0, 0, 162, 163, 0, + 0, 0, 164, 165, 166, 167, 168, 169, 170, 171, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, + 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 177, 182, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 183, 184, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 189, 190, 191, + 192, 193, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, + 0, 0, 200, 205, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 206, 207, 208, 0, 0, 0, + 0, 0, 0, 0, 0, +}; +static const YYINT yyrindex[] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + 13, 14, 15, 16, 93, 94, 95, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, +}; +static const YYINT yygindex[] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -14, 226, 227, 239, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, +}; +#define YYTABLESIZE 906 +static const YYINT yytable[] = { 511, + 3, 4, 5, 6, 563, 558, 559, 426, 454, 427, + 428, 596, 7, 8, 9, 10, 2, 441, 547, 548, + 549, 550, 551, 585, 597, 442, 443, 457, 458, 459, + 460, 461, 462, 463, 464, 512, 513, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 598, 599, 600, + 3, 601, 602, 603, 604, 605, 4, 563, 606, 607, + 514, 608, 609, 610, 611, 612, 613, 614, 615, 616, + 429, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 617, + 618, 619, 11, 12, 13, 14, 620, 621, 622, 623, + 5, 430, 624, 625, 431, 626, 627, 628, 629, 630, + 444, 631, 445, 632, 633, 634, 6, 635, 636, 637, + 638, 639, 640, 641, 642, 643, 644, 515, 516, 645, + 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, + 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 7, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 517, 682, 683, + 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, + 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, + 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 727, 728, 8, 729, 730, 565, 566, + 567, 731, 732, 733, 734, 735, 736, 737, 570, 738, + 739, 740, 741, 9, 742, 432, 743, 744, 745, 746, + 747, 748, 749, 750, 446, 580, 581, 582, 583, 584, + 751, 752, 753, 754, 10, 755, 756, 757, 758, 759, + 760, 761, 11, 586, 587, 3, 4, 5, 6, 564, + 762, 565, 566, 567, 568, 569, 588, 7, 8, 9, + 10, 570, 763, 764, 765, 12, 766, 767, 768, 13, + 769, 770, 771, 772, 773, 774, 775, 776, 777, 3, + 4, 5, 6, 778, 779, 3, 4, 5, 6, 780, + 781, 7, 8, 9, 10, 782, 783, 7, 8, 9, + 10, 784, 785, 786, 787, 788, 789, 790, 791, 792, + 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, + 803, 804, 805, 806, 807, 808, 809, 810, 811, 3, + 4, 5, 6, 812, 813, 814, 589, 11, 12, 13, + 14, 7, 8, 9, 10, 3, 4, 5, 6, 815, + 816, 817, 818, 819, 820, 821, 822, 7, 8, 9, + 10, 823, 824, 825, 826, 827, 828, 829, 830, 831, + 832, 11, 12, 13, 14, 833, 834, 11, 12, 13, + 14, 835, 836, 837, 838, 839, 3, 4, 5, 6, + 840, 841, 842, 843, 844, 845, 846, 847, 7, 8, + 9, 10, 848, 849, 850, 851, 852, 853, 854, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, + 866, 11, 12, 13, 14, 867, 868, 869, 870, 871, + 872, 873, 874, 875, 876, 877, 878, 11, 12, 13, + 14, 879, 880, 881, 3, 4, 5, 6, 882, 883, + 884, 885, 0, 0, 0, 0, 7, 8, 9, 10, + 0, 0, 3, 4, 5, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, + 13, 14, 0, 3, 4, 5, 6, 0, 0, 0, + 0, 3, 4, 5, 6, 7, 8, 9, 10, 0, + 0, 0, 0, 7, 8, 9, 10, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 5, 6, 3, 4, + 5, 6, 0, 0, 0, 0, 7, 8, 9, 10, + 7, 8, 9, 10, 0, 0, 11, 12, 13, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, + 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, + 11, 12, 13, 14, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, + 71, 72, 73, 0, 0, 0, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 115, 116, 117, 0, + 118, 119, 120, 0, 0, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 0, + 0, 0, 145, 0, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 0, 195, 0, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, + 216, 0, 0, 0, 0, 0, 0, 217, 0, 0, + 0, 0, 0, 0, 0, 218, 219, 0, 220, 221, + 0, 222, 223, 0, 0, 224, 225, 226, 227, 228, + 229, 230, 0, 0, 0, 231, +}; +static const YYINT yycheck[] = { 298, + 0, 0, 0, 0, 298, 535, 536, 298, 366, 300, + 301, 264, 0, 0, 0, 0, 265, 298, 504, 505, + 506, 507, 508, 38, 264, 306, 307, 350, 351, 352, + 353, 354, 355, 356, 357, 334, 335, 483, 484, 485, + 486, 487, 488, 489, 490, 491, 492, 264, 264, 264, + 299, 264, 264, 264, 264, 264, 305, 298, 264, 264, + 359, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 361, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 264, + 264, 264, 0, 0, 0, 0, 264, 264, 264, 264, + 349, 392, 264, 264, 395, 264, 264, 264, 264, 264, + 391, 264, 393, 264, 264, 264, 365, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 426, 427, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 406, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 466, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 464, 264, 264, 512, 513, + 514, 264, 264, 264, 264, 264, 264, 264, 522, 264, + 264, 264, 264, 482, 264, 526, 264, 264, 264, 264, + 264, 264, 264, 264, 525, 539, 540, 541, 542, 543, + 264, 264, 264, 264, 503, 264, 264, 264, 264, 264, + 264, 264, 511, 38, 38, 265, 265, 265, 265, 510, + 264, 512, 513, 514, 515, 516, 38, 265, 265, 265, + 265, 522, 264, 264, 264, 534, 264, 264, 264, 538, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 299, + 299, 299, 299, 264, 264, 305, 305, 305, 305, 264, + 264, 299, 299, 299, 299, 264, 264, 305, 305, 305, + 305, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 349, + 349, 349, 349, 264, 264, 264, 38, 265, 265, 265, + 265, 349, 349, 349, 349, 365, 365, 365, 365, 264, + 264, 264, 264, 264, 264, 264, 264, 365, 365, 365, + 365, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 299, 299, 299, 299, 264, 264, 305, 305, 305, + 305, 264, 264, 264, 264, 264, 406, 406, 406, 406, + 264, 264, 264, 264, 264, 264, 264, 264, 406, 406, + 406, 406, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 349, 349, 349, 349, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 365, 365, 365, + 365, 264, 264, 264, 464, 464, 464, 464, 264, 264, + 264, 264, -1, -1, -1, -1, 464, 464, 464, 464, + -1, -1, 482, 482, 482, 482, -1, -1, -1, -1, + -1, -1, -1, -1, 482, 482, 482, 482, 406, 406, + 406, 406, -1, 503, 503, 503, 503, -1, -1, -1, + -1, 511, 511, 511, 511, 503, 503, 503, 503, -1, + -1, -1, -1, 511, 511, 511, 511, -1, -1, -1, + -1, -1, -1, -1, 534, 534, 534, 534, 538, 538, + 538, 538, -1, -1, -1, -1, 534, 534, 534, 534, + 538, 538, 538, 538, -1, -1, 464, 464, 464, 464, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 482, 482, 482, 482, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 503, 503, 503, 503, -1, + -1, -1, -1, 511, 511, 511, 511, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 534, 534, 534, 534, + 538, 538, 538, 538, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, -1, -1, -1, -1, + 302, 303, 304, -1, -1, -1, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 358, 359, 360, -1, + 362, 363, 364, -1, -1, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, + -1, -1, 394, -1, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, -1, 465, -1, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 497, 498, 499, 500, 501, + 502, -1, -1, -1, -1, -1, -1, 509, -1, -1, + -1, -1, -1, -1, -1, 517, 518, -1, 520, 521, + -1, 523, 524, -1, -1, 527, 528, 529, 530, 531, + 532, 533, -1, -1, -1, 537, +}; +#define YYFINAL 1 +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif +#define YYMAXTOKEN 543 +#define YYUNDFTOKEN 857 +#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 178, 178, 178, 179, 179, 180, 180, 181, 181, - 181, 182, 182, 183, 183, 184, 188, 193, 194, 195, - 195, 195, 196, 196, 197, 197, 197, 198, 198, 199, - 199, 199, 200, 200, 201, 201, 201, 202, 202, 202, - 203, 203, 204, 204, 205, 205, 206, 206, 207, 207, - 208, 208, 209, 209, 210, 210, 211, 211, 211, 212, - 212, 212, 213, 213, 213, 214, 214, 215, 215, 216, - 216, 217, 217, 218, 218, 218, 219, 219, 220, 220, - 221, 221, 221, 222, 222, 223, 223, 224, 224, 225, - 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, - 230, 230, 231, 231, 231, 232, 232, 233, 233, 233, - 234, 234, 234, 235, 235, 235, 236, 236, 236, 236, - 237, 238, 238, 238, 239, 239, 239, 240, 240, 241, - 241, 242, 242, 242, 243, 243, 244, 244, 244, 245, - 246, 246, 247, 247, 248, 249, 249, 250, 250, 251, - 251, 252, 253, 253, 254, 254, 255, 255, 256, 256, - 257, 257, 258, 258, 258, 259, 259, 260, 260, 261, - 261, 262, 262, 263, 263, 264, 264, 265, 265, 265, - 266, 266, 266, 267, 267, 267, 268, 268, 269, 270, - 270, 271, 271, 272, 272, 273, 273, 274, 274, 274, - 275, 275, 275, 276, 276, 276, 277, 277, 278, 278, - 279, 279, 281, 293, 294, 295, 295, 295, 295, 295, - 296, 296, 298, 310, 311, 312, 312, 312, 312, 313, - 313, 315, 329, 330, 331, 331, 331, 331, 332, 332, - 332, 334, 351, 352, 353, 353, 353, 353, 354, 354, - 354, 355, 358, 377, 394, 402, 412, 420, 437, 438, - 439, 439, 439, 439, 439, 440, 440, 440, 441, 441, - 443, 452, 461, 472, 481, 490, 499, 510, 519, 531, - 545, 560, 571, 588, 605, 622, 639, 654, 669, 682, - 697, 706, 715, 724, 733, 742, 751, 760, 769, 778, - 787, 796, 805, 814, 823, 836, 845, 858, 867, 876, - 885, 892, 899, 908, 915, 924, 932, 939, 946, 954, - 963, 972, 986, 995, 1004, 1013, 1022, 1031, 1040, 1047, - 1054, 1080, 1088, 1095, 1102, 1109, 1116, 1124, 1132, 1140, - 1147, 1158, 1169, 1176, 1185, 1194, 1203, 1210, 1217, 1225, - 1233, 1243, 1253, 1263, 1277, 1285, 1298, 1309, 1317, 1330, - 1339, 1348, 1357, 1367, 1377, 1385, 1398, 1407, 1415, 1424, - 1432, 1445, 1454, 1461, 1471, 1481, 1491, 1501, 1511, 1521, - 1531, 1541, 1548, 1555, 1562, 1571, 1580, 1589, 1598, 1605, - 1615, 1635, 1642, 1660, 1673, 1686, 1695, 1704, 1713, 1722, - 1732, 1742, 1753, 1762, 1771, 1780, 1789, 1798, 1807, 1820, - 1833, 1842, 1849, 1858, 1867, 1876, 1885, 1893, 1906, 1914, - 1955, 1962, 1977, 1987, 1997, 2004, 2011, 2018, 2027, 2035, - 2049, 2070, 2091, 2103, 2115, 2127, 2136, 2157, 2167, 2176, - 2184, 2192, 2205, 2218, 2233, 2248, 2257, 2266, 2272, 2281, - 2290, 2300, 2310, 2323, 2336, 2348, 2362, 2374, 2388, 2398, - 2405, 2412, 2421, 2430, 2440, 2450, 2460, 2467, 2474, 2483, - 2492, 2502, 2512, 2519, 2526, 2533, 2541, 2551, 2561, 2571, - 2581, 2620, 2630, 2638, 2646, 2661, 2670, 2675, 2676, 2677, - 2677, 2677, 2678, 2678, 2678, 2679, 2679, 2681, 2691, 2700, - 2707, 2714, 2721, 2728, 2735, 2742, 2747, 2748, 2749, 2749, - 2750, 2750, 2750, 2751, 2752, 2752, 2753, 2753, 2754, 2754, - 2755, 2756, 2757, 2758, 2759, 2760, 2762, 2771, 2778, 2785, - 2794, 2801, 2808, 2815, 2822, 2831, 2840, 2847, 2854, 2864, - 2874, 2884, 2894, 2904, 2914, 2919, 2920, 2921, 2923, 2929, - 2939, 2946, 2955, 2963, 2968, 2969, 2971, 2971, 2971, 2972, - 2972, 2973, 2974, 2975, 2976, 2977, 2979, 2989, 2998, 3005, - 3014, 3021, 3030, 3038, 3051, 3059, 3072, 3077, 3078, 3079, - 3079, 3080, 3080, 3080, 3082, 3094, 3106, 3118, 3133, 3146, - 3157, 3162, 3163, 3164, 3164, 3166, 3181 +static const char *const yyname[] = { + +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SPACE","LETTER","NEWLINE", +"COMMENT","COLON","ANY","ZONESTR","STRING_ARG","VAR_SERVER","VAR_VERBOSITY", +"VAR_NUM_THREADS","VAR_PORT","VAR_OUTGOING_RANGE","VAR_INTERFACE", +"VAR_PREFER_IP4","VAR_DO_IP4","VAR_DO_IP6","VAR_PREFER_IP6","VAR_DO_UDP", +"VAR_DO_TCP","VAR_TCP_MSS","VAR_OUTGOING_TCP_MSS","VAR_TCP_IDLE_TIMEOUT", +"VAR_EDNS_TCP_KEEPALIVE","VAR_EDNS_TCP_KEEPALIVE_TIMEOUT","VAR_CHROOT", +"VAR_USERNAME","VAR_DIRECTORY","VAR_LOGFILE","VAR_PIDFILE","VAR_MSG_CACHE_SIZE", +"VAR_MSG_CACHE_SLABS","VAR_NUM_QUERIES_PER_THREAD","VAR_RRSET_CACHE_SIZE", +"VAR_RRSET_CACHE_SLABS","VAR_OUTGOING_NUM_TCP","VAR_INFRA_HOST_TTL", +"VAR_INFRA_LAME_TTL","VAR_INFRA_CACHE_SLABS","VAR_INFRA_CACHE_NUMHOSTS", +"VAR_INFRA_CACHE_LAME_SIZE","VAR_NAME","VAR_STUB_ZONE","VAR_STUB_HOST", +"VAR_STUB_ADDR","VAR_TARGET_FETCH_POLICY","VAR_HARDEN_SHORT_BUFSIZE", +"VAR_HARDEN_LARGE_QUERIES","VAR_FORWARD_ZONE","VAR_FORWARD_HOST", +"VAR_FORWARD_ADDR","VAR_DO_NOT_QUERY_ADDRESS","VAR_HIDE_IDENTITY", +"VAR_HIDE_VERSION","VAR_IDENTITY","VAR_VERSION","VAR_HARDEN_GLUE", +"VAR_MODULE_CONF","VAR_TRUST_ANCHOR_FILE","VAR_TRUST_ANCHOR", +"VAR_VAL_OVERRIDE_DATE","VAR_BOGUS_TTL","VAR_VAL_CLEAN_ADDITIONAL", +"VAR_VAL_PERMISSIVE_MODE","VAR_INCOMING_NUM_TCP","VAR_MSG_BUFFER_SIZE", +"VAR_KEY_CACHE_SIZE","VAR_KEY_CACHE_SLABS","VAR_TRUSTED_KEYS_FILE", +"VAR_VAL_NSEC3_KEYSIZE_ITERATIONS","VAR_USE_SYSLOG","VAR_OUTGOING_INTERFACE", +"VAR_ROOT_HINTS","VAR_DO_NOT_QUERY_LOCALHOST","VAR_CACHE_MAX_TTL", +"VAR_HARDEN_DNSSEC_STRIPPED","VAR_ACCESS_CONTROL","VAR_LOCAL_ZONE", +"VAR_LOCAL_DATA","VAR_INTERFACE_AUTOMATIC","VAR_STATISTICS_INTERVAL", +"VAR_DO_DAEMONIZE","VAR_USE_CAPS_FOR_ID","VAR_STATISTICS_CUMULATIVE", +"VAR_OUTGOING_PORT_PERMIT","VAR_OUTGOING_PORT_AVOID","VAR_DLV_ANCHOR_FILE", +"VAR_DLV_ANCHOR","VAR_NEG_CACHE_SIZE","VAR_HARDEN_REFERRAL_PATH", +"VAR_PRIVATE_ADDRESS","VAR_PRIVATE_DOMAIN","VAR_REMOTE_CONTROL", +"VAR_CONTROL_ENABLE","VAR_CONTROL_INTERFACE","VAR_CONTROL_PORT", +"VAR_SERVER_KEY_FILE","VAR_SERVER_CERT_FILE","VAR_CONTROL_KEY_FILE", +"VAR_CONTROL_CERT_FILE","VAR_CONTROL_USE_CERT","VAR_EXTENDED_STATISTICS", +"VAR_LOCAL_DATA_PTR","VAR_JOSTLE_TIMEOUT","VAR_STUB_PRIME", +"VAR_UNWANTED_REPLY_THRESHOLD","VAR_LOG_TIME_ASCII","VAR_DOMAIN_INSECURE", +"VAR_PYTHON","VAR_PYTHON_SCRIPT","VAR_VAL_SIG_SKEW_MIN","VAR_VAL_SIG_SKEW_MAX", +"VAR_CACHE_MIN_TTL","VAR_VAL_LOG_LEVEL","VAR_AUTO_TRUST_ANCHOR_FILE", +"VAR_KEEP_MISSING","VAR_ADD_HOLDDOWN","VAR_DEL_HOLDDOWN","VAR_SO_RCVBUF", +"VAR_EDNS_BUFFER_SIZE","VAR_PREFETCH","VAR_PREFETCH_KEY","VAR_SO_SNDBUF", +"VAR_SO_REUSEPORT","VAR_HARDEN_BELOW_NXDOMAIN","VAR_IGNORE_CD_FLAG", +"VAR_LOG_QUERIES","VAR_LOG_REPLIES","VAR_LOG_LOCAL_ACTIONS","VAR_TCP_UPSTREAM", +"VAR_SSL_UPSTREAM","VAR_SSL_SERVICE_KEY","VAR_SSL_SERVICE_PEM","VAR_SSL_PORT", +"VAR_FORWARD_FIRST","VAR_STUB_SSL_UPSTREAM","VAR_FORWARD_SSL_UPSTREAM", +"VAR_TLS_CERT_BUNDLE","VAR_STUB_FIRST","VAR_MINIMAL_RESPONSES", +"VAR_RRSET_ROUNDROBIN","VAR_MAX_UDP_SIZE","VAR_DELAY_CLOSE", +"VAR_UNBLOCK_LAN_ZONES","VAR_INSECURE_LAN_ZONES","VAR_INFRA_CACHE_MIN_RTT", +"VAR_DNS64_PREFIX","VAR_DNS64_SYNTHALL","VAR_DNS64_IGNORE_AAAA","VAR_DNSTAP", +"VAR_DNSTAP_ENABLE","VAR_DNSTAP_SOCKET_PATH","VAR_DNSTAP_IP","VAR_DNSTAP_TLS", +"VAR_DNSTAP_TLS_SERVER_NAME","VAR_DNSTAP_TLS_CERT_BUNDLE", +"VAR_DNSTAP_TLS_CLIENT_KEY_FILE","VAR_DNSTAP_TLS_CLIENT_CERT_FILE", +"VAR_DNSTAP_SEND_IDENTITY","VAR_DNSTAP_SEND_VERSION","VAR_DNSTAP_IDENTITY", +"VAR_DNSTAP_VERSION","VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", +"VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", +"VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", +"VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", +"VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", +"VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES","VAR_RESPONSE_IP_TAG", +"VAR_RESPONSE_IP","VAR_RESPONSE_IP_DATA","VAR_HARDEN_ALGO_DOWNGRADE", +"VAR_IP_TRANSPARENT","VAR_IP_DSCP","VAR_DISABLE_DNSSEC_LAME_CHECK", +"VAR_IP_RATELIMIT","VAR_IP_RATELIMIT_SLABS","VAR_IP_RATELIMIT_SIZE", +"VAR_RATELIMIT","VAR_RATELIMIT_SLABS","VAR_RATELIMIT_SIZE", +"VAR_RATELIMIT_FOR_DOMAIN","VAR_RATELIMIT_BELOW_DOMAIN", +"VAR_IP_RATELIMIT_FACTOR","VAR_RATELIMIT_FACTOR","VAR_SEND_CLIENT_SUBNET", +"VAR_CLIENT_SUBNET_ZONE","VAR_CLIENT_SUBNET_ALWAYS_FORWARD", +"VAR_CLIENT_SUBNET_OPCODE","VAR_MAX_CLIENT_SUBNET_IPV4", +"VAR_MAX_CLIENT_SUBNET_IPV6","VAR_MIN_CLIENT_SUBNET_IPV4", +"VAR_MIN_CLIENT_SUBNET_IPV6","VAR_MAX_ECS_TREE_SIZE_IPV4", +"VAR_MAX_ECS_TREE_SIZE_IPV6","VAR_CAPS_WHITELIST","VAR_CACHE_MAX_NEGATIVE_TTL", +"VAR_PERMIT_SMALL_HOLDDOWN","VAR_QNAME_MINIMISATION", +"VAR_QNAME_MINIMISATION_STRICT","VAR_IP_FREEBIND","VAR_DEFINE_TAG", +"VAR_LOCAL_ZONE_TAG","VAR_ACCESS_CONTROL_TAG","VAR_LOCAL_ZONE_OVERRIDE", +"VAR_ACCESS_CONTROL_TAG_ACTION","VAR_ACCESS_CONTROL_TAG_DATA","VAR_VIEW", +"VAR_ACCESS_CONTROL_VIEW","VAR_VIEW_FIRST","VAR_SERVE_EXPIRED", +"VAR_SERVE_EXPIRED_TTL","VAR_SERVE_EXPIRED_TTL_RESET", +"VAR_SERVE_EXPIRED_REPLY_TTL","VAR_SERVE_EXPIRED_CLIENT_TIMEOUT","VAR_FAKE_DSA", +"VAR_FAKE_SHA1","VAR_LOG_IDENTITY","VAR_HIDE_TRUSTANCHOR", +"VAR_TRUST_ANCHOR_SIGNALING","VAR_AGGRESSIVE_NSEC","VAR_USE_SYSTEMD", +"VAR_SHM_ENABLE","VAR_SHM_KEY","VAR_ROOT_KEY_SENTINEL","VAR_DNSCRYPT", +"VAR_DNSCRYPT_ENABLE","VAR_DNSCRYPT_PORT","VAR_DNSCRYPT_PROVIDER", +"VAR_DNSCRYPT_SECRET_KEY","VAR_DNSCRYPT_PROVIDER_CERT", +"VAR_DNSCRYPT_PROVIDER_CERT_ROTATED","VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", +"VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS","VAR_DNSCRYPT_NONCE_CACHE_SIZE", +"VAR_DNSCRYPT_NONCE_CACHE_SLABS","VAR_PAD_RESPONSES", +"VAR_PAD_RESPONSES_BLOCK_SIZE","VAR_PAD_QUERIES","VAR_PAD_QUERIES_BLOCK_SIZE", +"VAR_IPSECMOD_ENABLED","VAR_IPSECMOD_HOOK","VAR_IPSECMOD_IGNORE_BOGUS", +"VAR_IPSECMOD_MAX_TTL","VAR_IPSECMOD_WHITELIST","VAR_IPSECMOD_STRICT", +"VAR_CACHEDB","VAR_CACHEDB_BACKEND","VAR_CACHEDB_SECRETSEED", +"VAR_CACHEDB_REDISHOST","VAR_CACHEDB_REDISPORT","VAR_CACHEDB_REDISTIMEOUT", +"VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM","VAR_FOR_UPSTREAM","VAR_AUTH_ZONE", +"VAR_ZONEFILE","VAR_MASTER","VAR_URL","VAR_FOR_DOWNSTREAM", +"VAR_FALLBACK_ENABLED","VAR_TLS_ADDITIONAL_PORT","VAR_LOW_RTT", +"VAR_LOW_RTT_PERMIL","VAR_FAST_SERVER_PERMIL","VAR_FAST_SERVER_NUM", +"VAR_ALLOW_NOTIFY","VAR_TLS_WIN_CERT","VAR_TCP_CONNECTION_LIMIT", +"VAR_FORWARD_NO_CACHE","VAR_STUB_NO_CACHE","VAR_LOG_SERVFAIL","VAR_DENY_ANY", +"VAR_UNKNOWN_SERVER_TIME_LIMIT","VAR_LOG_TAG_QUERYREPLY","VAR_STREAM_WAIT_SIZE", +"VAR_TLS_CIPHERS","VAR_TLS_CIPHERSUITES","VAR_IPSET","VAR_IPSET_NAME_V4", +"VAR_IPSET_NAME_V6","VAR_TLS_SESSION_TICKET_KEYS","VAR_RPZ","VAR_TAGS", +"VAR_RPZ_ACTION_OVERRIDE","VAR_RPZ_CNAME_OVERRIDE","VAR_RPZ_LOG", +"VAR_RPZ_LOG_NAME",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,"illegal-symbol", +}; +static const char *const yyrule[] = { +"$accept : toplevelvars", +"toplevelvars :", +"toplevelvars : toplevelvars toplevelvar", +"toplevelvar : serverstart contents_server", +"toplevelvar : stubstart contents_stub", +"toplevelvar : forwardstart contents_forward", +"toplevelvar : pythonstart contents_py", +"toplevelvar : rcstart contents_rc", +"toplevelvar : dtstart contents_dt", +"toplevelvar : viewstart contents_view", +"toplevelvar : dnscstart contents_dnsc", +"toplevelvar : cachedbstart contents_cachedb", +"toplevelvar : ipsetstart contents_ipset", +"toplevelvar : authstart contents_auth", +"toplevelvar : rpzstart contents_rpz", +"serverstart : VAR_SERVER", +"contents_server : contents_server content_server", +"contents_server :", +"content_server : server_num_threads", +"content_server : server_verbosity", +"content_server : server_port", +"content_server : server_outgoing_range", +"content_server : server_do_ip4", +"content_server : server_do_ip6", +"content_server : server_prefer_ip4", +"content_server : server_prefer_ip6", +"content_server : server_do_udp", +"content_server : server_do_tcp", +"content_server : server_tcp_mss", +"content_server : server_outgoing_tcp_mss", +"content_server : server_tcp_idle_timeout", +"content_server : server_tcp_keepalive", +"content_server : server_tcp_keepalive_timeout", +"content_server : server_interface", +"content_server : server_chroot", +"content_server : server_username", +"content_server : server_directory", +"content_server : server_logfile", +"content_server : server_pidfile", +"content_server : server_msg_cache_size", +"content_server : server_msg_cache_slabs", +"content_server : server_num_queries_per_thread", +"content_server : server_rrset_cache_size", +"content_server : server_rrset_cache_slabs", +"content_server : server_outgoing_num_tcp", +"content_server : server_infra_host_ttl", +"content_server : server_infra_lame_ttl", +"content_server : server_infra_cache_slabs", +"content_server : server_infra_cache_numhosts", +"content_server : server_infra_cache_lame_size", +"content_server : server_target_fetch_policy", +"content_server : server_harden_short_bufsize", +"content_server : server_harden_large_queries", +"content_server : server_do_not_query_address", +"content_server : server_hide_identity", +"content_server : server_hide_version", +"content_server : server_identity", +"content_server : server_version", +"content_server : server_harden_glue", +"content_server : server_module_conf", +"content_server : server_trust_anchor_file", +"content_server : server_trust_anchor", +"content_server : server_val_override_date", +"content_server : server_bogus_ttl", +"content_server : server_val_clean_additional", +"content_server : server_val_permissive_mode", +"content_server : server_incoming_num_tcp", +"content_server : server_msg_buffer_size", +"content_server : server_key_cache_size", +"content_server : server_key_cache_slabs", +"content_server : server_trusted_keys_file", +"content_server : server_val_nsec3_keysize_iterations", +"content_server : server_use_syslog", +"content_server : server_outgoing_interface", +"content_server : server_root_hints", +"content_server : server_do_not_query_localhost", +"content_server : server_cache_max_ttl", +"content_server : server_harden_dnssec_stripped", +"content_server : server_access_control", +"content_server : server_local_zone", +"content_server : server_local_data", +"content_server : server_interface_automatic", +"content_server : server_statistics_interval", +"content_server : server_do_daemonize", +"content_server : server_use_caps_for_id", +"content_server : server_statistics_cumulative", +"content_server : server_outgoing_port_permit", +"content_server : server_outgoing_port_avoid", +"content_server : server_dlv_anchor_file", +"content_server : server_dlv_anchor", +"content_server : server_neg_cache_size", +"content_server : server_harden_referral_path", +"content_server : server_private_address", +"content_server : server_private_domain", +"content_server : server_extended_statistics", +"content_server : server_local_data_ptr", +"content_server : server_jostle_timeout", +"content_server : server_unwanted_reply_threshold", +"content_server : server_log_time_ascii", +"content_server : server_domain_insecure", +"content_server : server_val_sig_skew_min", +"content_server : server_val_sig_skew_max", +"content_server : server_cache_min_ttl", +"content_server : server_val_log_level", +"content_server : server_auto_trust_anchor_file", +"content_server : server_add_holddown", +"content_server : server_del_holddown", +"content_server : server_keep_missing", +"content_server : server_so_rcvbuf", +"content_server : server_edns_buffer_size", +"content_server : server_prefetch", +"content_server : server_prefetch_key", +"content_server : server_so_sndbuf", +"content_server : server_harden_below_nxdomain", +"content_server : server_ignore_cd_flag", +"content_server : server_log_queries", +"content_server : server_log_replies", +"content_server : server_tcp_upstream", +"content_server : server_ssl_upstream", +"content_server : server_log_local_actions", +"content_server : server_ssl_service_key", +"content_server : server_ssl_service_pem", +"content_server : server_ssl_port", +"content_server : server_minimal_responses", +"content_server : server_rrset_roundrobin", +"content_server : server_max_udp_size", +"content_server : server_so_reuseport", +"content_server : server_delay_close", +"content_server : server_unblock_lan_zones", +"content_server : server_insecure_lan_zones", +"content_server : server_dns64_prefix", +"content_server : server_dns64_synthall", +"content_server : server_dns64_ignore_aaaa", +"content_server : server_infra_cache_min_rtt", +"content_server : server_harden_algo_downgrade", +"content_server : server_ip_transparent", +"content_server : server_ip_ratelimit", +"content_server : server_ratelimit", +"content_server : server_ip_dscp", +"content_server : server_ip_ratelimit_slabs", +"content_server : server_ratelimit_slabs", +"content_server : server_ip_ratelimit_size", +"content_server : server_ratelimit_size", +"content_server : server_ratelimit_for_domain", +"content_server : server_ratelimit_below_domain", +"content_server : server_ratelimit_factor", +"content_server : server_ip_ratelimit_factor", +"content_server : server_send_client_subnet", +"content_server : server_client_subnet_zone", +"content_server : server_client_subnet_always_forward", +"content_server : server_client_subnet_opcode", +"content_server : server_max_client_subnet_ipv4", +"content_server : server_max_client_subnet_ipv6", +"content_server : server_min_client_subnet_ipv4", +"content_server : server_min_client_subnet_ipv6", +"content_server : server_max_ecs_tree_size_ipv4", +"content_server : server_max_ecs_tree_size_ipv6", +"content_server : server_caps_whitelist", +"content_server : server_cache_max_negative_ttl", +"content_server : server_permit_small_holddown", +"content_server : server_qname_minimisation", +"content_server : server_ip_freebind", +"content_server : server_define_tag", +"content_server : server_local_zone_tag", +"content_server : server_disable_dnssec_lame_check", +"content_server : server_access_control_tag", +"content_server : server_local_zone_override", +"content_server : server_access_control_tag_action", +"content_server : server_access_control_tag_data", +"content_server : server_access_control_view", +"content_server : server_qname_minimisation_strict", +"content_server : server_serve_expired", +"content_server : server_serve_expired_ttl", +"content_server : server_serve_expired_ttl_reset", +"content_server : server_serve_expired_reply_ttl", +"content_server : server_serve_expired_client_timeout", +"content_server : server_fake_dsa", +"content_server : server_log_identity", +"content_server : server_use_systemd", +"content_server : server_response_ip_tag", +"content_server : server_response_ip", +"content_server : server_response_ip_data", +"content_server : server_shm_enable", +"content_server : server_shm_key", +"content_server : server_fake_sha1", +"content_server : server_hide_trustanchor", +"content_server : server_trust_anchor_signaling", +"content_server : server_root_key_sentinel", +"content_server : server_ipsecmod_enabled", +"content_server : server_ipsecmod_hook", +"content_server : server_ipsecmod_ignore_bogus", +"content_server : server_ipsecmod_max_ttl", +"content_server : server_ipsecmod_whitelist", +"content_server : server_ipsecmod_strict", +"content_server : server_udp_upstream_without_downstream", +"content_server : server_aggressive_nsec", +"content_server : server_tls_cert_bundle", +"content_server : server_tls_additional_port", +"content_server : server_low_rtt", +"content_server : server_fast_server_permil", +"content_server : server_fast_server_num", +"content_server : server_tls_win_cert", +"content_server : server_tcp_connection_limit", +"content_server : server_log_servfail", +"content_server : server_deny_any", +"content_server : server_unknown_server_time_limit", +"content_server : server_log_tag_queryreply", +"content_server : server_stream_wait_size", +"content_server : server_tls_ciphers", +"content_server : server_tls_ciphersuites", +"content_server : server_tls_session_ticket_keys", +"stubstart : VAR_STUB_ZONE", +"contents_stub : contents_stub content_stub", +"contents_stub :", +"content_stub : stub_name", +"content_stub : stub_host", +"content_stub : stub_addr", +"content_stub : stub_prime", +"content_stub : stub_first", +"content_stub : stub_no_cache", +"content_stub : stub_ssl_upstream", +"forwardstart : VAR_FORWARD_ZONE", +"contents_forward : contents_forward content_forward", +"contents_forward :", +"content_forward : forward_name", +"content_forward : forward_host", +"content_forward : forward_addr", +"content_forward : forward_first", +"content_forward : forward_no_cache", +"content_forward : forward_ssl_upstream", +"viewstart : VAR_VIEW", +"contents_view : contents_view content_view", +"contents_view :", +"content_view : view_name", +"content_view : view_local_zone", +"content_view : view_local_data", +"content_view : view_first", +"content_view : view_response_ip", +"content_view : view_response_ip_data", +"content_view : view_local_data_ptr", +"authstart : VAR_AUTH_ZONE", +"contents_auth : contents_auth content_auth", +"contents_auth :", +"content_auth : auth_name", +"content_auth : auth_zonefile", +"content_auth : auth_master", +"content_auth : auth_url", +"content_auth : auth_for_downstream", +"content_auth : auth_for_upstream", +"content_auth : auth_fallback_enabled", +"content_auth : auth_allow_notify", +"rpz_tag : VAR_TAGS STRING_ARG", +"rpz_action_override : VAR_RPZ_ACTION_OVERRIDE STRING_ARG", +"rpz_cname_override : VAR_RPZ_CNAME_OVERRIDE STRING_ARG", +"rpz_log : VAR_RPZ_LOG STRING_ARG", +"rpz_log_name : VAR_RPZ_LOG_NAME STRING_ARG", +"rpzstart : VAR_RPZ", +"contents_rpz : contents_rpz content_rpz", +"contents_rpz :", +"content_rpz : auth_name", +"content_rpz : auth_zonefile", +"content_rpz : rpz_tag", +"content_rpz : auth_master", +"content_rpz : auth_url", +"content_rpz : auth_allow_notify", +"content_rpz : rpz_action_override", +"content_rpz : rpz_cname_override", +"content_rpz : rpz_log", +"content_rpz : rpz_log_name", +"server_num_threads : VAR_NUM_THREADS STRING_ARG", +"server_verbosity : VAR_VERBOSITY STRING_ARG", +"server_statistics_interval : VAR_STATISTICS_INTERVAL STRING_ARG", +"server_statistics_cumulative : VAR_STATISTICS_CUMULATIVE STRING_ARG", +"server_extended_statistics : VAR_EXTENDED_STATISTICS STRING_ARG", +"server_shm_enable : VAR_SHM_ENABLE STRING_ARG", +"server_shm_key : VAR_SHM_KEY STRING_ARG", +"server_port : VAR_PORT STRING_ARG", +"server_send_client_subnet : VAR_SEND_CLIENT_SUBNET STRING_ARG", +"server_client_subnet_zone : VAR_CLIENT_SUBNET_ZONE STRING_ARG", +"server_client_subnet_always_forward : VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG", +"server_client_subnet_opcode : VAR_CLIENT_SUBNET_OPCODE STRING_ARG", +"server_max_client_subnet_ipv4 : VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG", +"server_max_client_subnet_ipv6 : VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG", +"server_min_client_subnet_ipv4 : VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG", +"server_min_client_subnet_ipv6 : VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG", +"server_max_ecs_tree_size_ipv4 : VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG", +"server_max_ecs_tree_size_ipv6 : VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG", +"server_interface : VAR_INTERFACE STRING_ARG", +"server_outgoing_interface : VAR_OUTGOING_INTERFACE STRING_ARG", +"server_outgoing_range : VAR_OUTGOING_RANGE STRING_ARG", +"server_outgoing_port_permit : VAR_OUTGOING_PORT_PERMIT STRING_ARG", +"server_outgoing_port_avoid : VAR_OUTGOING_PORT_AVOID STRING_ARG", +"server_outgoing_num_tcp : VAR_OUTGOING_NUM_TCP STRING_ARG", +"server_incoming_num_tcp : VAR_INCOMING_NUM_TCP STRING_ARG", +"server_interface_automatic : VAR_INTERFACE_AUTOMATIC STRING_ARG", +"server_do_ip4 : VAR_DO_IP4 STRING_ARG", +"server_do_ip6 : VAR_DO_IP6 STRING_ARG", +"server_do_udp : VAR_DO_UDP STRING_ARG", +"server_do_tcp : VAR_DO_TCP STRING_ARG", +"server_prefer_ip4 : VAR_PREFER_IP4 STRING_ARG", +"server_prefer_ip6 : VAR_PREFER_IP6 STRING_ARG", +"server_tcp_mss : VAR_TCP_MSS STRING_ARG", +"server_outgoing_tcp_mss : VAR_OUTGOING_TCP_MSS STRING_ARG", +"server_tcp_idle_timeout : VAR_TCP_IDLE_TIMEOUT STRING_ARG", +"server_tcp_keepalive : VAR_EDNS_TCP_KEEPALIVE STRING_ARG", +"server_tcp_keepalive_timeout : VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG", +"server_tcp_upstream : VAR_TCP_UPSTREAM STRING_ARG", +"server_udp_upstream_without_downstream : VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG", +"server_ssl_upstream : VAR_SSL_UPSTREAM STRING_ARG", +"server_ssl_service_key : VAR_SSL_SERVICE_KEY STRING_ARG", +"server_ssl_service_pem : VAR_SSL_SERVICE_PEM STRING_ARG", +"server_ssl_port : VAR_SSL_PORT STRING_ARG", +"server_tls_cert_bundle : VAR_TLS_CERT_BUNDLE STRING_ARG", +"server_tls_win_cert : VAR_TLS_WIN_CERT STRING_ARG", +"server_tls_additional_port : VAR_TLS_ADDITIONAL_PORT STRING_ARG", +"server_tls_ciphers : VAR_TLS_CIPHERS STRING_ARG", +"server_tls_ciphersuites : VAR_TLS_CIPHERSUITES STRING_ARG", +"server_tls_session_ticket_keys : VAR_TLS_SESSION_TICKET_KEYS STRING_ARG", +"server_use_systemd : VAR_USE_SYSTEMD STRING_ARG", +"server_do_daemonize : VAR_DO_DAEMONIZE STRING_ARG", +"server_use_syslog : VAR_USE_SYSLOG STRING_ARG", +"server_log_time_ascii : VAR_LOG_TIME_ASCII STRING_ARG", +"server_log_queries : VAR_LOG_QUERIES STRING_ARG", +"server_log_replies : VAR_LOG_REPLIES STRING_ARG", +"server_log_tag_queryreply : VAR_LOG_TAG_QUERYREPLY STRING_ARG", +"server_log_servfail : VAR_LOG_SERVFAIL STRING_ARG", +"server_log_local_actions : VAR_LOG_LOCAL_ACTIONS STRING_ARG", +"server_chroot : VAR_CHROOT STRING_ARG", +"server_username : VAR_USERNAME STRING_ARG", +"server_directory : VAR_DIRECTORY STRING_ARG", +"server_logfile : VAR_LOGFILE STRING_ARG", +"server_pidfile : VAR_PIDFILE STRING_ARG", +"server_root_hints : VAR_ROOT_HINTS STRING_ARG", +"server_dlv_anchor_file : VAR_DLV_ANCHOR_FILE STRING_ARG", +"server_dlv_anchor : VAR_DLV_ANCHOR STRING_ARG", +"server_auto_trust_anchor_file : VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG", +"server_trust_anchor_file : VAR_TRUST_ANCHOR_FILE STRING_ARG", +"server_trusted_keys_file : VAR_TRUSTED_KEYS_FILE STRING_ARG", +"server_trust_anchor : VAR_TRUST_ANCHOR STRING_ARG", +"server_trust_anchor_signaling : VAR_TRUST_ANCHOR_SIGNALING STRING_ARG", +"server_root_key_sentinel : VAR_ROOT_KEY_SENTINEL STRING_ARG", +"server_domain_insecure : VAR_DOMAIN_INSECURE STRING_ARG", +"server_hide_identity : VAR_HIDE_IDENTITY STRING_ARG", +"server_hide_version : VAR_HIDE_VERSION STRING_ARG", +"server_hide_trustanchor : VAR_HIDE_TRUSTANCHOR STRING_ARG", +"server_identity : VAR_IDENTITY STRING_ARG", +"server_version : VAR_VERSION STRING_ARG", +"server_so_rcvbuf : VAR_SO_RCVBUF STRING_ARG", +"server_so_sndbuf : VAR_SO_SNDBUF STRING_ARG", +"server_so_reuseport : VAR_SO_REUSEPORT STRING_ARG", +"server_ip_transparent : VAR_IP_TRANSPARENT STRING_ARG", +"server_ip_freebind : VAR_IP_FREEBIND STRING_ARG", +"server_ip_dscp : VAR_IP_DSCP STRING_ARG", +"server_stream_wait_size : VAR_STREAM_WAIT_SIZE STRING_ARG", +"server_edns_buffer_size : VAR_EDNS_BUFFER_SIZE STRING_ARG", +"server_msg_buffer_size : VAR_MSG_BUFFER_SIZE STRING_ARG", +"server_msg_cache_size : VAR_MSG_CACHE_SIZE STRING_ARG", +"server_msg_cache_slabs : VAR_MSG_CACHE_SLABS STRING_ARG", +"server_num_queries_per_thread : VAR_NUM_QUERIES_PER_THREAD STRING_ARG", +"server_jostle_timeout : VAR_JOSTLE_TIMEOUT STRING_ARG", +"server_delay_close : VAR_DELAY_CLOSE STRING_ARG", +"server_unblock_lan_zones : VAR_UNBLOCK_LAN_ZONES STRING_ARG", +"server_insecure_lan_zones : VAR_INSECURE_LAN_ZONES STRING_ARG", +"server_rrset_cache_size : VAR_RRSET_CACHE_SIZE STRING_ARG", +"server_rrset_cache_slabs : VAR_RRSET_CACHE_SLABS STRING_ARG", +"server_infra_host_ttl : VAR_INFRA_HOST_TTL STRING_ARG", +"server_infra_lame_ttl : VAR_INFRA_LAME_TTL STRING_ARG", +"server_infra_cache_numhosts : VAR_INFRA_CACHE_NUMHOSTS STRING_ARG", +"server_infra_cache_lame_size : VAR_INFRA_CACHE_LAME_SIZE STRING_ARG", +"server_infra_cache_slabs : VAR_INFRA_CACHE_SLABS STRING_ARG", +"server_infra_cache_min_rtt : VAR_INFRA_CACHE_MIN_RTT STRING_ARG", +"server_target_fetch_policy : VAR_TARGET_FETCH_POLICY STRING_ARG", +"server_harden_short_bufsize : VAR_HARDEN_SHORT_BUFSIZE STRING_ARG", +"server_harden_large_queries : VAR_HARDEN_LARGE_QUERIES STRING_ARG", +"server_harden_glue : VAR_HARDEN_GLUE STRING_ARG", +"server_harden_dnssec_stripped : VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG", +"server_harden_below_nxdomain : VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG", +"server_harden_referral_path : VAR_HARDEN_REFERRAL_PATH STRING_ARG", +"server_harden_algo_downgrade : VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG", +"server_use_caps_for_id : VAR_USE_CAPS_FOR_ID STRING_ARG", +"server_caps_whitelist : VAR_CAPS_WHITELIST STRING_ARG", +"server_private_address : VAR_PRIVATE_ADDRESS STRING_ARG", +"server_private_domain : VAR_PRIVATE_DOMAIN STRING_ARG", +"server_prefetch : VAR_PREFETCH STRING_ARG", +"server_prefetch_key : VAR_PREFETCH_KEY STRING_ARG", +"server_deny_any : VAR_DENY_ANY STRING_ARG", +"server_unwanted_reply_threshold : VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG", +"server_do_not_query_address : VAR_DO_NOT_QUERY_ADDRESS STRING_ARG", +"server_do_not_query_localhost : VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG", +"server_access_control : VAR_ACCESS_CONTROL STRING_ARG STRING_ARG", +"server_module_conf : VAR_MODULE_CONF STRING_ARG", +"server_val_override_date : VAR_VAL_OVERRIDE_DATE STRING_ARG", +"server_val_sig_skew_min : VAR_VAL_SIG_SKEW_MIN STRING_ARG", +"server_val_sig_skew_max : VAR_VAL_SIG_SKEW_MAX STRING_ARG", +"server_cache_max_ttl : VAR_CACHE_MAX_TTL STRING_ARG", +"server_cache_max_negative_ttl : VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG", +"server_cache_min_ttl : VAR_CACHE_MIN_TTL STRING_ARG", +"server_bogus_ttl : VAR_BOGUS_TTL STRING_ARG", +"server_val_clean_additional : VAR_VAL_CLEAN_ADDITIONAL STRING_ARG", +"server_val_permissive_mode : VAR_VAL_PERMISSIVE_MODE STRING_ARG", +"server_aggressive_nsec : VAR_AGGRESSIVE_NSEC STRING_ARG", +"server_ignore_cd_flag : VAR_IGNORE_CD_FLAG STRING_ARG", +"server_serve_expired : VAR_SERVE_EXPIRED STRING_ARG", +"server_serve_expired_ttl : VAR_SERVE_EXPIRED_TTL STRING_ARG", +"server_serve_expired_ttl_reset : VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG", +"server_serve_expired_reply_ttl : VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG", +"server_serve_expired_client_timeout : VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG", +"server_fake_dsa : VAR_FAKE_DSA STRING_ARG", +"server_fake_sha1 : VAR_FAKE_SHA1 STRING_ARG", +"server_val_log_level : VAR_VAL_LOG_LEVEL STRING_ARG", +"server_val_nsec3_keysize_iterations : VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG", +"server_add_holddown : VAR_ADD_HOLDDOWN STRING_ARG", +"server_del_holddown : VAR_DEL_HOLDDOWN STRING_ARG", +"server_keep_missing : VAR_KEEP_MISSING STRING_ARG", +"server_permit_small_holddown : VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG", +"server_key_cache_size : VAR_KEY_CACHE_SIZE STRING_ARG", +"server_key_cache_slabs : VAR_KEY_CACHE_SLABS STRING_ARG", +"server_neg_cache_size : VAR_NEG_CACHE_SIZE STRING_ARG", +"server_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG", +"server_local_data : VAR_LOCAL_DATA STRING_ARG", +"server_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG", +"server_minimal_responses : VAR_MINIMAL_RESPONSES STRING_ARG", +"server_rrset_roundrobin : VAR_RRSET_ROUNDROBIN STRING_ARG", +"server_unknown_server_time_limit : VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG", +"server_max_udp_size : VAR_MAX_UDP_SIZE STRING_ARG", +"server_dns64_prefix : VAR_DNS64_PREFIX STRING_ARG", +"server_dns64_synthall : VAR_DNS64_SYNTHALL STRING_ARG", +"server_dns64_ignore_aaaa : VAR_DNS64_IGNORE_AAAA STRING_ARG", +"server_define_tag : VAR_DEFINE_TAG STRING_ARG", +"server_local_zone_tag : VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG", +"server_access_control_tag : VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG", +"server_access_control_tag_action : VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG", +"server_access_control_tag_data : VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG", +"server_local_zone_override : VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG", +"server_access_control_view : VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG", +"server_response_ip_tag : VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG", +"server_ip_ratelimit : VAR_IP_RATELIMIT STRING_ARG", +"server_ratelimit : VAR_RATELIMIT STRING_ARG", +"server_ip_ratelimit_size : VAR_IP_RATELIMIT_SIZE STRING_ARG", +"server_ratelimit_size : VAR_RATELIMIT_SIZE STRING_ARG", +"server_ip_ratelimit_slabs : VAR_IP_RATELIMIT_SLABS STRING_ARG", +"server_ratelimit_slabs : VAR_RATELIMIT_SLABS STRING_ARG", +"server_ratelimit_for_domain : VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG", +"server_ratelimit_below_domain : VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG", +"server_ip_ratelimit_factor : VAR_IP_RATELIMIT_FACTOR STRING_ARG", +"server_ratelimit_factor : VAR_RATELIMIT_FACTOR STRING_ARG", +"server_low_rtt : VAR_LOW_RTT STRING_ARG", +"server_fast_server_num : VAR_FAST_SERVER_NUM STRING_ARG", +"server_fast_server_permil : VAR_FAST_SERVER_PERMIL STRING_ARG", +"server_qname_minimisation : VAR_QNAME_MINIMISATION STRING_ARG", +"server_qname_minimisation_strict : VAR_QNAME_MINIMISATION_STRICT STRING_ARG", +"server_pad_responses : VAR_PAD_RESPONSES STRING_ARG", +"server_pad_responses_block_size : VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG", +"server_pad_queries : VAR_PAD_QUERIES STRING_ARG", +"server_pad_queries_block_size : VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG", +"server_ipsecmod_enabled : VAR_IPSECMOD_ENABLED STRING_ARG", +"server_ipsecmod_ignore_bogus : VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG", +"server_ipsecmod_hook : VAR_IPSECMOD_HOOK STRING_ARG", +"server_ipsecmod_max_ttl : VAR_IPSECMOD_MAX_TTL STRING_ARG", +"server_ipsecmod_whitelist : VAR_IPSECMOD_WHITELIST STRING_ARG", +"server_ipsecmod_strict : VAR_IPSECMOD_STRICT STRING_ARG", +"stub_name : VAR_NAME STRING_ARG", +"stub_host : VAR_STUB_HOST STRING_ARG", +"stub_addr : VAR_STUB_ADDR STRING_ARG", +"stub_first : VAR_STUB_FIRST STRING_ARG", +"stub_no_cache : VAR_STUB_NO_CACHE STRING_ARG", +"stub_ssl_upstream : VAR_STUB_SSL_UPSTREAM STRING_ARG", +"stub_prime : VAR_STUB_PRIME STRING_ARG", +"forward_name : VAR_NAME STRING_ARG", +"forward_host : VAR_FORWARD_HOST STRING_ARG", +"forward_addr : VAR_FORWARD_ADDR STRING_ARG", +"forward_first : VAR_FORWARD_FIRST STRING_ARG", +"forward_no_cache : VAR_FORWARD_NO_CACHE STRING_ARG", +"forward_ssl_upstream : VAR_FORWARD_SSL_UPSTREAM STRING_ARG", +"auth_name : VAR_NAME STRING_ARG", +"auth_zonefile : VAR_ZONEFILE STRING_ARG", +"auth_master : VAR_MASTER STRING_ARG", +"auth_url : VAR_URL STRING_ARG", +"auth_allow_notify : VAR_ALLOW_NOTIFY STRING_ARG", +"auth_for_downstream : VAR_FOR_DOWNSTREAM STRING_ARG", +"auth_for_upstream : VAR_FOR_UPSTREAM STRING_ARG", +"auth_fallback_enabled : VAR_FALLBACK_ENABLED STRING_ARG", +"view_name : VAR_NAME STRING_ARG", +"view_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG", +"view_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG", +"view_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG", +"view_local_data : VAR_LOCAL_DATA STRING_ARG", +"view_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG", +"view_first : VAR_VIEW_FIRST STRING_ARG", +"rcstart : VAR_REMOTE_CONTROL", +"contents_rc : contents_rc content_rc", +"contents_rc :", +"content_rc : rc_control_enable", +"content_rc : rc_control_interface", +"content_rc : rc_control_port", +"content_rc : rc_server_key_file", +"content_rc : rc_server_cert_file", +"content_rc : rc_control_key_file", +"content_rc : rc_control_cert_file", +"content_rc : rc_control_use_cert", +"rc_control_enable : VAR_CONTROL_ENABLE STRING_ARG", +"rc_control_port : VAR_CONTROL_PORT STRING_ARG", +"rc_control_interface : VAR_CONTROL_INTERFACE STRING_ARG", +"rc_control_use_cert : VAR_CONTROL_USE_CERT STRING_ARG", +"rc_server_key_file : VAR_SERVER_KEY_FILE STRING_ARG", +"rc_server_cert_file : VAR_SERVER_CERT_FILE STRING_ARG", +"rc_control_key_file : VAR_CONTROL_KEY_FILE STRING_ARG", +"rc_control_cert_file : VAR_CONTROL_CERT_FILE STRING_ARG", +"dtstart : VAR_DNSTAP", +"contents_dt : contents_dt content_dt", +"contents_dt :", +"content_dt : dt_dnstap_enable", +"content_dt : dt_dnstap_socket_path", +"content_dt : dt_dnstap_ip", +"content_dt : dt_dnstap_tls", +"content_dt : dt_dnstap_tls_server_name", +"content_dt : dt_dnstap_tls_cert_bundle", +"content_dt : dt_dnstap_tls_client_key_file", +"content_dt : dt_dnstap_tls_client_cert_file", +"content_dt : dt_dnstap_send_identity", +"content_dt : dt_dnstap_send_version", +"content_dt : dt_dnstap_identity", +"content_dt : dt_dnstap_version", +"content_dt : dt_dnstap_log_resolver_query_messages", +"content_dt : dt_dnstap_log_resolver_response_messages", +"content_dt : dt_dnstap_log_client_query_messages", +"content_dt : dt_dnstap_log_client_response_messages", +"content_dt : dt_dnstap_log_forwarder_query_messages", +"content_dt : dt_dnstap_log_forwarder_response_messages", +"dt_dnstap_enable : VAR_DNSTAP_ENABLE STRING_ARG", +"dt_dnstap_socket_path : VAR_DNSTAP_SOCKET_PATH STRING_ARG", +"dt_dnstap_ip : VAR_DNSTAP_IP STRING_ARG", +"dt_dnstap_tls : VAR_DNSTAP_TLS STRING_ARG", +"dt_dnstap_tls_server_name : VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG", +"dt_dnstap_tls_cert_bundle : VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG", +"dt_dnstap_tls_client_key_file : VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG", +"dt_dnstap_tls_client_cert_file : VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG", +"dt_dnstap_send_identity : VAR_DNSTAP_SEND_IDENTITY STRING_ARG", +"dt_dnstap_send_version : VAR_DNSTAP_SEND_VERSION STRING_ARG", +"dt_dnstap_identity : VAR_DNSTAP_IDENTITY STRING_ARG", +"dt_dnstap_version : VAR_DNSTAP_VERSION STRING_ARG", +"dt_dnstap_log_resolver_query_messages : VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG", +"dt_dnstap_log_resolver_response_messages : VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG", +"dt_dnstap_log_client_query_messages : VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG", +"dt_dnstap_log_client_response_messages : VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG", +"dt_dnstap_log_forwarder_query_messages : VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG", +"dt_dnstap_log_forwarder_response_messages : VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG", +"pythonstart : VAR_PYTHON", +"contents_py : contents_py content_py", +"contents_py :", +"content_py : py_script", +"py_script : VAR_PYTHON_SCRIPT STRING_ARG", +"server_disable_dnssec_lame_check : VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG", +"server_log_identity : VAR_LOG_IDENTITY STRING_ARG", +"server_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG", +"server_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG", +"dnscstart : VAR_DNSCRYPT", +"contents_dnsc : contents_dnsc content_dnsc", +"contents_dnsc :", +"content_dnsc : dnsc_dnscrypt_enable", +"content_dnsc : dnsc_dnscrypt_port", +"content_dnsc : dnsc_dnscrypt_provider", +"content_dnsc : dnsc_dnscrypt_secret_key", +"content_dnsc : dnsc_dnscrypt_provider_cert", +"content_dnsc : dnsc_dnscrypt_provider_cert_rotated", +"content_dnsc : dnsc_dnscrypt_shared_secret_cache_size", +"content_dnsc : dnsc_dnscrypt_shared_secret_cache_slabs", +"content_dnsc : dnsc_dnscrypt_nonce_cache_size", +"content_dnsc : dnsc_dnscrypt_nonce_cache_slabs", +"dnsc_dnscrypt_enable : VAR_DNSCRYPT_ENABLE STRING_ARG", +"dnsc_dnscrypt_port : VAR_DNSCRYPT_PORT STRING_ARG", +"dnsc_dnscrypt_provider : VAR_DNSCRYPT_PROVIDER STRING_ARG", +"dnsc_dnscrypt_provider_cert : VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG", +"dnsc_dnscrypt_provider_cert_rotated : VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG", +"dnsc_dnscrypt_secret_key : VAR_DNSCRYPT_SECRET_KEY STRING_ARG", +"dnsc_dnscrypt_shared_secret_cache_size : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG", +"dnsc_dnscrypt_shared_secret_cache_slabs : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG", +"dnsc_dnscrypt_nonce_cache_size : VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG", +"dnsc_dnscrypt_nonce_cache_slabs : VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG", +"cachedbstart : VAR_CACHEDB", +"contents_cachedb : contents_cachedb content_cachedb", +"contents_cachedb :", +"content_cachedb : cachedb_backend_name", +"content_cachedb : cachedb_secret_seed", +"content_cachedb : redis_server_host", +"content_cachedb : redis_server_port", +"content_cachedb : redis_timeout", +"cachedb_backend_name : VAR_CACHEDB_BACKEND STRING_ARG", +"cachedb_secret_seed : VAR_CACHEDB_SECRETSEED STRING_ARG", +"redis_server_host : VAR_CACHEDB_REDISHOST STRING_ARG", +"redis_server_port : VAR_CACHEDB_REDISPORT STRING_ARG", +"redis_timeout : VAR_CACHEDB_REDISTIMEOUT STRING_ARG", +"server_tcp_connection_limit : VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG", +"ipsetstart : VAR_IPSET", +"contents_ipset : contents_ipset content_ipset", +"contents_ipset :", +"content_ipset : ipset_name_v4", +"content_ipset : ipset_name_v6", +"ipset_name_v4 : VAR_IPSET_NAME_V4 STRING_ARG", +"ipset_name_v6 : VAR_IPSET_NAME_V6 STRING_ARG", + }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", - "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY", - "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", - "VAR_PREFER_IP4", "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", - "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", - "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", - "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", - "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE", - "VAR_MSG_CACHE_SLABS", "VAR_NUM_QUERIES_PER_THREAD", - "VAR_RRSET_CACHE_SIZE", "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", - "VAR_INFRA_HOST_TTL", "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", - "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME", - "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR", - "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE", - "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST", - "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY", - "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE", - "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR", - "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL", - "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE", - "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE", - "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG", - "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST", - "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL", - "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC", - "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID", - "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT", - "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR", - "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS", - "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE", - "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE", - "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE", - "VAR_CONTROL_USE_CERT", "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", - "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", - "VAR_LOG_TIME_ASCII", "VAR_DOMAIN_INSECURE", "VAR_PYTHON", - "VAR_PYTHON_SCRIPT", "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", - "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", - "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", - "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", - "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", - "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", - "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM", - "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", - "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", - "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_STUB_FIRST", - "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", - "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", - "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", - "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", - "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", - "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", - "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", - "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", - "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", - "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", - "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG", - "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE", - "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK", - "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", - "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", - "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", - "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR", - "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE", - "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE", - "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6", - "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6", - "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6", - "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL", - "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", - "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", - "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG", - "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION", - "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", - "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", - "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", - "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", - "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", - "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", - "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT", - "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", - "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT", - "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED", - "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", - "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS", - "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS", - "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", - "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", - "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", - "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT", - "VAR_CACHEDB_REDISTIMEOUT", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", - "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", - "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", - "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", - "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", - "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", - "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", - "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY", - "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", - "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", - "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", - "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", - "VAR_RPZ_LOG_NAME", "$accept", "toplevelvars", "toplevelvar", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "viewstart", "contents_view", "content_view", - "authstart", "contents_auth", "content_auth", "rpz_tag", - "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", - "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", - "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", - "server_client_subnet_always_forward", "server_client_subnet_opcode", - "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", - "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", - "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6", - "server_interface", "server_outgoing_interface", "server_outgoing_range", - "server_outgoing_port_permit", "server_outgoing_port_avoid", - "server_outgoing_num_tcp", "server_incoming_num_tcp", - "server_interface_automatic", "server_do_ip4", "server_do_ip6", - "server_do_udp", "server_do_tcp", "server_prefer_ip4", - "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss", - "server_tcp_idle_timeout", "server_tcp_keepalive", - "server_tcp_keepalive_timeout", "server_tcp_upstream", - "server_udp_upstream_without_downstream", "server_ssl_upstream", - "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", - "server_tls_cert_bundle", "server_tls_win_cert", - "server_tls_additional_port", "server_tls_ciphers", - "server_tls_ciphersuites", "server_tls_session_ticket_keys", - "server_use_systemd", "server_do_daemonize", "server_use_syslog", - "server_log_time_ascii", "server_log_queries", "server_log_replies", - "server_log_tag_queryreply", "server_log_servfail", - "server_log_local_actions", "server_chroot", "server_username", - "server_directory", "server_logfile", "server_pidfile", - "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", - "server_auto_trust_anchor_file", "server_trust_anchor_file", - "server_trusted_keys_file", "server_trust_anchor", - "server_trust_anchor_signaling", "server_root_key_sentinel", - "server_domain_insecure", "server_hide_identity", "server_hide_version", - "server_hide_trustanchor", "server_identity", "server_version", - "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", - "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", - "server_stream_wait_size", "server_edns_buffer_size", - "server_msg_buffer_size", "server_msg_cache_size", - "server_msg_cache_slabs", "server_num_queries_per_thread", - "server_jostle_timeout", "server_delay_close", - "server_unblock_lan_zones", "server_insecure_lan_zones", - "server_rrset_cache_size", "server_rrset_cache_slabs", - "server_infra_host_ttl", "server_infra_lame_ttl", - "server_infra_cache_numhosts", "server_infra_cache_lame_size", - "server_infra_cache_slabs", "server_infra_cache_min_rtt", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", - "server_val_nsec3_keysize_iterations", "server_add_holddown", - "server_del_holddown", "server_keep_missing", - "server_permit_small_holddown", "server_key_cache_size", - "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", - "server_local_data", "server_local_data_ptr", "server_minimal_responses", - "server_rrset_roundrobin", "server_unknown_server_time_limit", - "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall", - "server_dns64_ignore_aaaa", "server_define_tag", "server_local_zone_tag", - "server_access_control_tag", "server_access_control_tag_action", - "server_access_control_tag_data", "server_local_zone_override", - "server_access_control_view", "server_response_ip_tag", - "server_ip_ratelimit", "server_ratelimit", "server_ip_ratelimit_size", - "server_ratelimit_size", "server_ip_ratelimit_slabs", - "server_ratelimit_slabs", "server_ratelimit_for_domain", - "server_ratelimit_below_domain", "server_ip_ratelimit_factor", - "server_ratelimit_factor", "server_low_rtt", "server_fast_server_num", - "server_fast_server_permil", "server_qname_minimisation", - "server_qname_minimisation_strict", "server_ipsecmod_enabled", - "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", - "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime", - "forward_name", "forward_host", "forward_addr", "forward_first", - "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile", - "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", - "auth_for_upstream", "auth_fallback_enabled", "view_name", - "view_local_zone", "view_response_ip", "view_response_ip_data", - "view_local_data", "view_local_data_ptr", "view_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", - "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", - "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls", - "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle", - "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file", - "dt_dnstap_send_identity", "dt_dnstap_send_version", - "dt_dnstap_identity", "dt_dnstap_version", - "dt_dnstap_log_resolver_query_messages", - "dt_dnstap_log_resolver_response_messages", - "dt_dnstap_log_client_query_messages", - "dt_dnstap_log_client_response_messages", - "dt_dnstap_log_forwarder_query_messages", - "dt_dnstap_log_forwarder_response_messages", "pythonstart", - "contents_py", "content_py", "py_script", - "server_disable_dnssec_lame_check", "server_log_identity", - "server_response_ip", "server_response_ip_data", "dnscstart", - "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", - "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider", - "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated", - "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size", - "dnsc_dnscrypt_shared_secret_cache_slabs", - "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", - "cachedbstart", "contents_cachedb", "content_cachedb", - "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", - "redis_server_port", "redis_timeout", "server_tcp_connection_limit", - "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", - "ipset_name_v6", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540 -}; -# endif - -#define YYPACT_NINF -270 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-270))) - -#define YYTABLE_NINF -1 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - -270, 0, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, 269, -42, - -37, -41, -21, -43, -44, -87, -106, -205, -229, -269, - 2, 3, 4, 12, 24, 25, 26, 27, 28, 31, - 32, 33, 34, 36, 37, 38, 39, 40, 50, 51, - 52, 53, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 87, 88, 91, 93, 94, 95, 96, - 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 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, 204, 205, - 206, 207, 208, 209, 210, 212, 213, 214, 215, 217, - 219, 222, 234, 236, 237, 238, 239, 240, 241, 242, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 267, 268, 303, 304, 305, 306, 310, 311, - 312, 354, 355, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 356, 357, 358, - 359, 360, 361, 362, -270, -270, -270, -270, -270, -270, - -270, -270, 366, 370, 371, 396, 397, 398, -270, -270, - -270, -270, -270, -270, -270, 400, 411, 412, 413, 414, - 415, 416, -270, -270, -270, -270, -270, -270, -270, -270, - 417, 418, 419, 420, 421, 422, 423, 424, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 425, 426, 427, - 428, 429, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, 469, 471, 487, 488, 489, 490, 491, - 492, -270, -270, -270, -270, -270, -270, -270, -270, -270, - 493, 494, 495, 496, 497, 504, 505, 506, 507, 508, - 509, 511, 512, 513, 514, 515, 516, 517, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 520, -270, -270, - 523, 526, 527, 535, 536, 537, 539, 540, 541, 542, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, 543, 544, 545, 546, 547, -270, -270, -270, -270, - -270, -270, 548, 549, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 550, 551, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, 552, 553, 554, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 555, 556, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, 557, 558, - 559, 560, 561, 562, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, 563, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, 564, -270, -270, 565, 566, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, 567, 568, 569, -270, - -270, -270, -270, -270, -270, -270, -270 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint16 yydefact[] = -{ - 2, 0, 1, 16, 212, 222, 486, 544, 505, 231, - 553, 576, 241, 590, 257, 3, 18, 214, 224, 233, - 243, 259, 488, 507, 546, 555, 578, 592, 4, 5, - 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 19, 20, 83, 86, 95, 183, - 184, 21, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 34, 74, 22, 87, 88, 45, 67, 82, - 23, 24, 27, 28, 25, 26, 29, 30, 31, 32, - 33, 118, 195, 119, 121, 122, 123, 197, 202, 198, - 209, 210, 211, 179, 84, 73, 99, 116, 117, 207, - 204, 120, 35, 36, 37, 38, 39, 75, 89, 90, - 105, 61, 71, 62, 187, 188, 100, 55, 56, 186, - 57, 58, 109, 113, 127, 136, 162, 139, 208, 110, - 68, 40, 41, 42, 97, 128, 129, 130, 43, 44, - 46, 47, 49, 50, 48, 134, 51, 52, 53, 59, - 78, 114, 92, 135, 85, 158, 93, 94, 111, 112, - 205, 98, 54, 76, 79, 60, 63, 101, 102, 77, - 159, 103, 64, 65, 66, 196, 115, 172, 173, 174, - 175, 176, 177, 185, 104, 72, 106, 107, 108, 160, - 69, 70, 91, 80, 81, 96, 124, 125, 206, 126, - 131, 132, 133, 163, 164, 166, 168, 169, 167, 170, - 180, 137, 138, 142, 143, 140, 141, 144, 145, 147, - 146, 199, 201, 200, 161, 171, 189, 191, 190, 192, - 193, 194, 165, 178, 181, 182, 203, 0, 0, 0, - 0, 0, 0, 0, 213, 215, 216, 217, 219, 220, - 221, 218, 0, 0, 0, 0, 0, 0, 223, 225, - 226, 227, 228, 229, 230, 0, 0, 0, 0, 0, - 0, 0, 232, 234, 235, 238, 239, 236, 240, 237, - 0, 0, 0, 0, 0, 0, 0, 0, 242, 244, - 245, 246, 247, 251, 248, 249, 250, 0, 0, 0, - 0, 0, 262, 266, 267, 268, 269, 258, 260, 261, - 263, 264, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 487, 489, 491, 490, 496, 492, 493, 494, 495, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 0, 545, 547, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 554, 556, 557, 558, 560, 561, 559, 562, 563, 564, - 565, 0, 0, 0, 0, 0, 577, 579, 580, 581, - 582, 583, 0, 0, 591, 593, 594, 271, 270, 277, - 290, 288, 300, 296, 297, 301, 298, 299, 302, 303, - 304, 305, 306, 328, 329, 330, 331, 332, 357, 358, - 359, 364, 365, 293, 366, 367, 370, 368, 369, 372, - 373, 374, 388, 343, 344, 346, 347, 375, 391, 337, - 339, 392, 398, 399, 400, 294, 356, 416, 417, 338, - 411, 321, 289, 333, 389, 395, 376, 0, 0, 420, - 295, 272, 320, 380, 273, 291, 292, 334, 335, 418, - 378, 382, 383, 274, 421, 360, 387, 322, 342, 393, - 394, 397, 410, 336, 414, 412, 413, 348, 355, 384, - 385, 349, 350, 377, 402, 323, 324, 327, 307, 309, - 310, 311, 312, 313, 422, 423, 425, 361, 362, 363, - 371, 426, 427, 428, 0, 0, 0, 379, 351, 353, - 549, 437, 441, 439, 438, 442, 440, 0, 0, 445, - 446, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 381, 396, 415, 450, 451, 352, 429, 0, 0, - 0, 0, 0, 0, 403, 404, 405, 406, 407, 408, - 409, 550, 345, 340, 401, 319, 275, 276, 341, 452, - 454, 453, 455, 456, 457, 308, 315, 447, 449, 448, - 314, 0, 326, 386, 424, 325, 354, 316, 317, 318, - 458, 459, 460, 464, 463, 461, 462, 465, 466, 467, - 468, 470, 469, 479, 0, 483, 484, 0, 0, 485, - 471, 477, 472, 473, 474, 476, 478, 475, 252, 253, - 254, 255, 256, 497, 499, 498, 501, 502, 503, 504, - 500, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 548, - 566, 567, 568, 571, 569, 570, 572, 573, 574, 575, - 584, 585, 586, 587, 588, 595, 596, 390, 419, 436, - 551, 552, 443, 444, 430, 431, 0, 0, 0, 435, - 589, 480, 481, 482, 434, 432, 433 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -23, 570, 571, - 572, 573, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 1, 15, 16, 28, 233, 17, 29, 434, 18, - 30, 448, 19, 31, 462, 20, 32, 478, 492, 493, - 494, 495, 496, 21, 33, 497, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 435, 436, 437, 438, 439, 440, - 441, 449, 450, 451, 452, 453, 454, 479, 480, 481, - 482, 483, 484, 485, 486, 463, 464, 465, 466, 467, - 468, 469, 22, 34, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 23, 35, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 24, 36, 558, 559, 422, 423, - 424, 425, 25, 37, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 26, 38, 586, 587, 588, - 589, 590, 591, 426, 27, 39, 594, 595, 596 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint16 yytable[] = -{ - 2, 470, 427, 455, 428, 429, 557, 442, 592, 593, - 498, 3, 597, 598, 599, 443, 444, 581, 582, 583, - 584, 585, 600, 470, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 601, 602, 603, 604, 605, 456, - 457, 606, 607, 608, 609, 4, 610, 611, 612, 613, - 614, 5, 503, 504, 505, 506, 507, 508, 509, 510, - 615, 616, 617, 618, 458, 430, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 6, 431, 630, 631, 432, - 445, 632, 446, 633, 634, 635, 636, 637, 638, 639, - 640, 7, 641, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 459, 460, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 8, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, - 696, 461, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, - 9, 472, 473, 474, 735, 736, 737, 738, 739, 740, - 741, 477, 742, 743, 744, 745, 433, 746, 10, 747, - 447, 471, 748, 472, 473, 474, 475, 476, 487, 488, - 489, 490, 491, 477, 749, 11, 750, 751, 752, 753, - 754, 755, 756, 12, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 13, 779, 780, 0, - 14, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 781, 782, 783, 784, 72, 73, 74, - 785, 786, 787, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 788, 789, 790, 791, 792, 793, - 794, 795, 796, 116, 117, 118, 797, 119, 120, 121, - 798, 799, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 800, 801, 802, 146, - 803, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 804, 805, 806, 807, 808, 809, 810, 811, 812, - 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 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, 823, - 196, 824, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 825, 826, 827, - 828, 829, 830, 831, 832, 833, 834, 835, 212, 213, - 214, 215, 216, 217, 836, 837, 838, 839, 840, 841, - 218, 842, 843, 844, 845, 846, 847, 848, 219, 220, - 849, 221, 222, 850, 223, 224, 851, 852, 225, 226, - 227, 228, 229, 230, 231, 853, 854, 855, 232, 856, - 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, - 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 499, 500, 501, 502 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 44, 44, 44, 46, 47, 112, 44, 277, 278, - 33, 11, 10, 10, 10, 52, 53, 246, 247, 248, - 249, 250, 10, 44, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 10, 10, 10, 10, 10, 80, - 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 96, 97, 98, 99, 100, 101, 102, 103, - 10, 10, 10, 10, 105, 107, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, - 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, - 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 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, - 210, 254, 255, 256, 10, 10, 10, 10, 10, 10, - 10, 264, 10, 10, 10, 10, 268, 10, 228, 10, - 267, 252, 10, 254, 255, 256, 257, 258, 281, 282, - 283, 284, 285, 264, 10, 245, 10, 10, 10, 10, - 10, 10, 10, 253, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 276, 10, 10, -1, - 280, 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, 37, 38, 39, 40, - 41, 42, 43, 10, 10, 10, 10, 48, 49, 50, - 10, 10, 10, 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, 88, 89, 90, - 91, 92, 93, 94, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 104, 105, 106, 10, 108, 109, 110, - 10, 10, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 10, 10, 10, 140, - 10, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 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, 10, - 211, 10, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 239, 240, - 241, 242, 243, 244, 10, 10, 10, 10, 10, 10, - 251, 10, 10, 10, 10, 10, 10, 10, 259, 260, - 10, 262, 263, 10, 265, 266, 10, 10, 269, 270, - 271, 272, 273, 274, 275, 10, 10, 10, 279, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, 33, 33, 33 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 287, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 253, 276, 280, 288, 289, 292, 295, 298, - 301, 309, 528, 539, 560, 568, 581, 590, 290, 293, - 296, 299, 302, 310, 529, 540, 561, 569, 582, 591, - 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, 37, 38, 39, 40, 41, - 42, 43, 48, 49, 50, 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, 88, - 89, 90, 91, 92, 93, 94, 104, 105, 106, 108, - 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 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, 211, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 239, 240, 241, 242, 243, 244, 251, 259, - 260, 262, 263, 265, 266, 269, 270, 271, 272, 273, - 274, 275, 279, 291, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 564, 565, 566, 567, 589, 44, 46, 47, - 107, 138, 141, 268, 294, 500, 501, 502, 503, 504, - 505, 506, 44, 52, 53, 137, 139, 267, 297, 507, - 508, 509, 510, 511, 512, 44, 80, 81, 105, 172, - 173, 212, 300, 521, 522, 523, 524, 525, 526, 527, - 44, 252, 254, 255, 256, 257, 258, 264, 303, 513, - 514, 515, 516, 517, 518, 519, 520, 281, 282, 283, - 284, 285, 304, 305, 306, 307, 308, 311, 513, 514, - 515, 516, 517, 96, 97, 98, 99, 100, 101, 102, - 103, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 558, 559, 112, 562, 563, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 246, 247, 248, 249, 250, 583, 584, 585, 586, - 587, 588, 277, 278, 592, 593, 594, 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, 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, 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, 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, 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, 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, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 286, 287, 287, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 289, 290, 290, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 292, 293, 293, 294, 294, 294, 294, 294, - 294, 294, 295, 296, 296, 297, 297, 297, 297, 297, - 297, 298, 299, 299, 300, 300, 300, 300, 300, 300, - 300, 301, 302, 302, 303, 303, 303, 303, 303, 303, - 303, 303, 304, 305, 306, 307, 308, 309, 310, 310, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 529, 530, - 530, 530, 530, 530, 530, 530, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 540, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 541, 541, 541, 541, 541, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 569, 570, 570, 570, 570, - 570, 570, 570, 570, 570, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 582, 583, - 583, 583, 583, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 591, 592, 592, 593, 594 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 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, 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, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 4, 4, 4, 3, 3, 2, 2, 2, - 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 2, 2, - 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyoutput = yyo; - YYUSE (yyoutput); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); -# endif - YYUSE (yytype); -} - - -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ - -static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - unsigned long yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - - -/*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | -`------------------------------------------------------------*/ -yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; - - if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; +int yydebug; +int yynerrs; + +int yyerrflag; +int yychar; +YYSTYPE yyval; +YYSTYPE yylval; + +/* define the initial stack-sizes */ +#ifdef YYSTACKSIZE +#undef YYMAXDEPTH +#define YYMAXDEPTH YYSTACKSIZE #else - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); - -# if defined yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; - } -# else /* defined YYSTACK_RELOCATE */ - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 16: -#line 189 "./util/configparser.y" - { - OUTYY(("\nP(server:)\n")); - } -#line 2706 "util/configparser.c" - break; - - case 212: -#line 282 "./util/configparser.y" - { - struct config_stub* s; - OUTYY(("\nP(stub_zone:)\n")); - s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); - if(s) { - s->next = cfg_parser->cfg->stubs; - cfg_parser->cfg->stubs = s; - } else - yyerror("out of memory"); - } -#line 2721 "util/configparser.c" - break; - - case 222: -#line 299 "./util/configparser.y" - { - struct config_stub* s; - OUTYY(("\nP(forward_zone:)\n")); - s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); - if(s) { - s->next = cfg_parser->cfg->forwards; - cfg_parser->cfg->forwards = s; - } else - yyerror("out of memory"); - } -#line 2736 "util/configparser.c" - break; - - case 231: -#line 316 "./util/configparser.y" - { - struct config_view* s; - OUTYY(("\nP(view:)\n")); - s = (struct config_view*)calloc(1, sizeof(struct config_view)); - if(s) { - s->next = cfg_parser->cfg->views; - if(s->next && !s->next->name) - yyerror("view without name"); - cfg_parser->cfg->views = s; - } else - yyerror("out of memory"); - } -#line 2753 "util/configparser.c" - break; - - case 241: -#line 335 "./util/configparser.y" - { - struct config_auth* s; - OUTYY(("\nP(auth_zone:)\n")); - s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); - if(s) { - s->next = cfg_parser->cfg->auths; - cfg_parser->cfg->auths = s; - /* defaults for auth zone */ - s->for_downstream = 1; - s->for_upstream = 1; - s->fallback_enabled = 0; - s->isrpz = 0; - } else - yyerror("out of memory"); - } -#line 2773 "util/configparser.c" - break; - - case 252: -#line 359 "./util/configparser.y" - { - uint8_t* bitlist; - size_t len = 0; - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); - bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - } - if(bitlist) { - cfg_parser->cfg->auths->rpz_taglist = bitlist; - cfg_parser->cfg->auths->rpz_taglistlen = len; - - } - } -#line 2794 "util/configparser.c" - break; - - case 253: -#line 378 "./util/configparser.y" - { - OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && - strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && - strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) { - yyerror("rpz-action-override action: expected nxdomain, " - "nodata, passthru, drop, cname or disabled"); - free((yyvsp[0].str)); - cfg_parser->cfg->auths->rpz_action_override = NULL; - } - else { - cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); - } - } -#line 2813 "util/configparser.c" - break; - - case 254: -#line 395 "./util/configparser.y" - { - OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->rpz_cname); - cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); - } -#line 2823 "util/configparser.c" - break; - - case 255: -#line 403 "./util/configparser.y" - { - OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2835 "util/configparser.c" - break; - - case 256: -#line 413 "./util/configparser.y" - { - OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->rpz_log_name); - cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); - } -#line 2845 "util/configparser.c" - break; - - case 257: -#line 421 "./util/configparser.y" - { - struct config_auth* s; - OUTYY(("\nP(rpz:)\n")); - s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); - if(s) { - s->next = cfg_parser->cfg->auths; - cfg_parser->cfg->auths = s; - /* defaults for RPZ auth zone */ - s->for_downstream = 0; - s->for_upstream = 0; - s->fallback_enabled = 0; - s->isrpz = 1; - } else - yyerror("out of memory"); - } -#line 2865 "util/configparser.c" - break; - - case 270: -#line 444 "./util/configparser.y" - { - OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2877 "util/configparser.c" - break; - - case 271: -#line 453 "./util/configparser.y" - { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2889 "util/configparser.c" - break; - - case 272: -#line 462 "./util/configparser.y" - { - OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) - cfg_parser->cfg->stat_interval = 0; - else if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2903 "util/configparser.c" - break; - - case 273: -#line 473 "./util/configparser.y" - { - OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2915 "util/configparser.c" - break; - - case 274: -#line 482 "./util/configparser.y" - { - OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2927 "util/configparser.c" - break; - - case 275: -#line 491 "./util/configparser.y" - { - OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2939 "util/configparser.c" - break; - - case 276: -#line 500 "./util/configparser.y" - { - OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) - cfg_parser->cfg->shm_key = 0; - else if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2953 "util/configparser.c" - break; - - case 277: -#line 511 "./util/configparser.y" - { - OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2965 "util/configparser.c" - break; - - case 278: -#line 520 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) - fatal_exit("out of memory adding client-subnet"); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 2980 "util/configparser.c" - break; - - case 279: -#line 532 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, - (yyvsp[0].str))) - fatal_exit("out of memory adding client-subnet-zone"); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 2996 "util/configparser.c" - break; - - case 280: -#line 546 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->client_subnet_always_forward = - (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3014 "util/configparser.c" - break; - - case 281: -#line 561 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); - OUTYY(("P(Deprecated option, ignoring)\n")); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3028 "util/configparser.c" - break; - - case 282: -#line 572 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) - cfg_parser->cfg->max_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_client_subnet_ipv4 = 0; - else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3048 "util/configparser.c" - break; - - case 283: -#line 589 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) - cfg_parser->cfg->max_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_client_subnet_ipv6 = 0; - else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3068 "util/configparser.c" - break; - - case 284: -#line 606 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) - cfg_parser->cfg->min_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->min_client_subnet_ipv4 = 0; - else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3088 "util/configparser.c" - break; - - case 285: -#line 623 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) - cfg_parser->cfg->min_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->min_client_subnet_ipv6 = 0; - else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3108 "util/configparser.c" - break; - - case 286: -#line 640 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3126 "util/configparser.c" - break; - - case 287: -#line 655 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv6 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3144 "util/configparser.c" - break; - - case 288: -#line 670 "./util/configparser.y" - { - OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->num_ifs == 0) - cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); - else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, - (cfg_parser->cfg->num_ifs+1)*sizeof(char*)); - if(!cfg_parser->cfg->ifs) - yyerror("out of memory"); - else - cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); - } -#line 3160 "util/configparser.c" - break; - - case 289: -#line 683 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->num_out_ifs == 0) - cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); - else cfg_parser->cfg->out_ifs = realloc( - cfg_parser->cfg->out_ifs, - (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*)); - if(!cfg_parser->cfg->out_ifs) - yyerror("out of memory"); - else - cfg_parser->cfg->out_ifs[ - cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); - } -#line 3178 "util/configparser.c" - break; - - case 290: -#line 698 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3190 "util/configparser.c" - break; - - case 291: -#line 707 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 1, - cfg_parser->cfg->outgoing_avail_ports, 65536)) - yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); - } -#line 3202 "util/configparser.c" - break; - - case 292: -#line 716 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 0, - cfg_parser->cfg->outgoing_avail_ports, 65536)) - yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); - } -#line 3214 "util/configparser.c" - break; - - case 293: -#line 725 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3226 "util/configparser.c" - break; - - case 294: -#line 734 "./util/configparser.y" - { - OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3238 "util/configparser.c" - break; - - case 295: -#line 743 "./util/configparser.y" - { - OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3250 "util/configparser.c" - break; - - case 296: -#line 752 "./util/configparser.y" - { - OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3262 "util/configparser.c" - break; - - case 297: -#line 761 "./util/configparser.y" - { - OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3274 "util/configparser.c" - break; - - case 298: -#line 770 "./util/configparser.y" - { - OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3286 "util/configparser.c" - break; - - case 299: -#line 779 "./util/configparser.y" - { - OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3298 "util/configparser.c" - break; - - case 300: -#line 788 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3310 "util/configparser.c" - break; - - case 301: -#line 797 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3322 "util/configparser.c" - break; - - case 302: -#line 806 "./util/configparser.y" - { - OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3334 "util/configparser.c" - break; - - case 303: -#line 815 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3346 "util/configparser.c" - break; - - case 304: -#line 824 "./util/configparser.y" - { - OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 120000) - cfg_parser->cfg->tcp_idle_timeout = 120000; - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_idle_timeout = 1; - else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3362 "util/configparser.c" - break; - - case 305: -#line 837 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3374 "util/configparser.c" - break; - - case 306: -#line 846 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 6553500) - cfg_parser->cfg->tcp_keepalive_timeout = 6553500; - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_keepalive_timeout = 0; - else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3390 "util/configparser.c" - break; - - case 307: -#line 859 "./util/configparser.y" - { - OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3402 "util/configparser.c" - break; - - case 308: -#line 868 "./util/configparser.y" - { - OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3414 "util/configparser.c" - break; - - case 309: -#line 877 "./util/configparser.y" - { - OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3426 "util/configparser.c" - break; - - case 310: -#line 886 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ssl_service_key); - cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); - } -#line 3436 "util/configparser.c" - break; - - case 311: -#line 893 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ssl_service_pem); - cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); - } -#line 3446 "util/configparser.c" - break; - - case 312: -#line 900 "./util/configparser.y" - { - OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3458 "util/configparser.c" - break; - - case 313: -#line 909 "./util/configparser.y" - { - OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_cert_bundle); - cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); - } -#line 3468 "util/configparser.c" - break; - - case 314: -#line 916 "./util/configparser.y" - { - OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3480 "util/configparser.c" - break; - - case 315: -#line 925 "./util/configparser.y" - { - OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3491 "util/configparser.c" - break; - - case 316: -#line 933 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_ciphers); - cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); - } -#line 3501 "util/configparser.c" - break; - - case 317: -#line 940 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_ciphersuites); - cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); - } -#line 3511 "util/configparser.c" - break; - - case 318: -#line 947 "./util/configparser.y" - { - OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3522 "util/configparser.c" - break; - - case 319: -#line 955 "./util/configparser.y" - { - OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3534 "util/configparser.c" - break; - - case 320: -#line 964 "./util/configparser.y" - { - OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3546 "util/configparser.c" - break; - - case 321: -#line 973 "./util/configparser.y" - { - OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0); -#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) - if(strcmp((yyvsp[0].str), "yes") == 0) - yyerror("no syslog services are available. " - "(reconfigure and compile to add)"); -#endif - free((yyvsp[0].str)); - } -#line 3563 "util/configparser.c" - break; - - case 322: -#line 987 "./util/configparser.y" - { - OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3575 "util/configparser.c" - break; - - case 323: -#line 996 "./util/configparser.y" - { - OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3587 "util/configparser.c" - break; - - case 324: -#line 1005 "./util/configparser.y" - { - OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3599 "util/configparser.c" - break; - - case 325: -#line 1014 "./util/configparser.y" - { - OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3611 "util/configparser.c" - break; - - case 326: -#line 1023 "./util/configparser.y" - { - OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3623 "util/configparser.c" - break; - - case 327: -#line 1032 "./util/configparser.y" - { - OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3635 "util/configparser.c" - break; - - case 328: -#line 1041 "./util/configparser.y" - { - OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->chrootdir); - cfg_parser->cfg->chrootdir = (yyvsp[0].str); - } -#line 3645 "util/configparser.c" - break; - - case 329: -#line 1048 "./util/configparser.y" - { - OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->username); - cfg_parser->cfg->username = (yyvsp[0].str); - } -#line 3655 "util/configparser.c" - break; - - case 330: -#line 1055 "./util/configparser.y" - { - OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->directory); - cfg_parser->cfg->directory = (yyvsp[0].str); - /* change there right away for includes relative to this */ - if((yyvsp[0].str)[0]) { - char* d; -#ifdef UB_ON_WINDOWS - w_config_adjust_directory(cfg_parser->cfg); -#endif - d = cfg_parser->cfg->directory; - /* adjust directory if we have already chroot, - * like, we reread after sighup */ - if(cfg_parser->chroot && cfg_parser->chroot[0] && - strncmp(d, cfg_parser->chroot, strlen( - cfg_parser->chroot)) == 0) - d += strlen(cfg_parser->chroot); - if(d[0]) { - if(chdir(d)) - log_err("cannot chdir to directory: %s (%s)", - d, strerror(errno)); - } - } - } -#line 3684 "util/configparser.c" - break; - - case 331: -#line 1081 "./util/configparser.y" - { - OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->logfile); - cfg_parser->cfg->logfile = (yyvsp[0].str); - cfg_parser->cfg->use_syslog = 0; - } -#line 3695 "util/configparser.c" - break; - - case 332: -#line 1089 "./util/configparser.y" - { - OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->pidfile); - cfg_parser->cfg->pidfile = (yyvsp[0].str); - } -#line 3705 "util/configparser.c" - break; - - case 333: -#line 1096 "./util/configparser.y" - { - OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3715 "util/configparser.c" - break; - - case 334: -#line 1103 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dlv_anchor_file); - cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); - } -#line 3725 "util/configparser.c" - break; - - case 335: -#line 1110 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3735 "util/configparser.c" - break; - - case 336: -#line 1117 "./util/configparser.y" - { - OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - auto_trust_anchor_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3746 "util/configparser.c" - break; - - case 337: -#line 1125 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - trust_anchor_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3757 "util/configparser.c" - break; - - case 338: -#line 1133 "./util/configparser.y" - { - OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - trusted_keys_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3768 "util/configparser.c" - break; - - case 339: -#line 1141 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3778 "util/configparser.c" - break; - - case 340: -#line 1148 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->trust_anchor_signaling = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3792 "util/configparser.c" - break; - - case 341: -#line 1159 "./util/configparser.y" - { - OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->root_key_sentinel = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3806 "util/configparser.c" - break; - - case 342: -#line 1170 "./util/configparser.y" - { - OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3816 "util/configparser.c" - break; - - case 343: -#line 1177 "./util/configparser.y" - { - OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3828 "util/configparser.c" - break; - - case 344: -#line 1186 "./util/configparser.y" - { - OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3840 "util/configparser.c" - break; - - case 345: -#line 1195 "./util/configparser.y" - { - OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3852 "util/configparser.c" - break; - - case 346: -#line 1204 "./util/configparser.y" - { - OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->identity); - cfg_parser->cfg->identity = (yyvsp[0].str); - } -#line 3862 "util/configparser.c" - break; - - case 347: -#line 1211 "./util/configparser.y" - { - OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->version); - cfg_parser->cfg->version = (yyvsp[0].str); - } -#line 3872 "util/configparser.c" - break; - - case 348: -#line 1218 "./util/configparser.y" - { - OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) - yyerror("buffer size expected"); - free((yyvsp[0].str)); - } -#line 3883 "util/configparser.c" - break; - - case 349: -#line 1226 "./util/configparser.y" - { - OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) - yyerror("buffer size expected"); - free((yyvsp[0].str)); - } -#line 3894 "util/configparser.c" - break; - - case 350: -#line 1234 "./util/configparser.y" - { - OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->so_reuseport = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3907 "util/configparser.c" - break; - - case 351: -#line 1244 "./util/configparser.y" - { - OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_transparent = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3920 "util/configparser.c" - break; - - case 352: -#line 1254 "./util/configparser.y" - { - OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_freebind = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3933 "util/configparser.c" - break; - - case 353: -#line 1264 "./util/configparser.y" - { - OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 63) - yyerror("value too large (max 63)"); - else if (atoi((yyvsp[0].str)) < 0) - yyerror("value too small (min 0)"); - else - cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3950 "util/configparser.c" - break; - - case 354: -#line 1278 "./util/configparser.y" - { - OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 3961 "util/configparser.c" - break; - - case 355: -#line 1286 "./util/configparser.y" - { - OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 12) - yyerror("edns buffer size too small"); - else if (atoi((yyvsp[0].str)) > 65535) - cfg_parser->cfg->edns_buffer_size = 65535; - else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3977 "util/configparser.c" - break; - - case 356: -#line 1299 "./util/configparser.y" - { - OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 4096) - yyerror("message buffer size too small (use 4096)"); - else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3991 "util/configparser.c" - break; - - case 357: -#line 1310 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4002 "util/configparser.c" - break; - - case 358: -#line 1318 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4018 "util/configparser.c" - break; - - case 359: -#line 1331 "./util/configparser.y" - { - OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4030 "util/configparser.c" - break; - - case 360: -#line 1340 "./util/configparser.y" - { - OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4042 "util/configparser.c" - break; - - case 361: -#line 1349 "./util/configparser.y" - { - OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4054 "util/configparser.c" - break; - - case 362: -#line 1358 "./util/configparser.y" - { - OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->unblock_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4067 "util/configparser.c" - break; - - case 363: -#line 1368 "./util/configparser.y" - { - OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->insecure_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4080 "util/configparser.c" - break; - - case 364: -#line 1378 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4091 "util/configparser.c" - break; - - case 365: -#line 1386 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4107 "util/configparser.c" - break; - - case 366: -#line 1399 "./util/configparser.y" - { - OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4119 "util/configparser.c" - break; - - case 367: -#line 1408 "./util/configparser.y" - { - OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); - verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " - "removed, use infra-host-ttl)", (yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4130 "util/configparser.c" - break; - - case 368: -#line 1416 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4142 "util/configparser.c" - break; - - case 369: -#line 1425 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); - verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " - "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4153 "util/configparser.c" - break; - - case 370: -#line 1433 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4169 "util/configparser.c" - break; - - case 371: -#line 1446 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4181 "util/configparser.c" - break; - - case 372: -#line 1455 "./util/configparser.y" - { - OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->target_fetch_policy); - cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); - } -#line 4191 "util/configparser.c" - break; - - case 373: -#line 1462 "./util/configparser.y" - { - OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_short_bufsize = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4204 "util/configparser.c" - break; - - case 374: -#line 1472 "./util/configparser.y" - { - OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_large_queries = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4217 "util/configparser.c" - break; - - case 375: -#line 1482 "./util/configparser.y" - { - OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_glue = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4230 "util/configparser.c" - break; - - case 376: -#line 1492 "./util/configparser.y" - { - OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_dnssec_stripped = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4243 "util/configparser.c" - break; - - case 377: -#line 1502 "./util/configparser.y" - { - OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_below_nxdomain = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4256 "util/configparser.c" - break; - - case 378: -#line 1512 "./util/configparser.y" - { - OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_referral_path = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4269 "util/configparser.c" - break; - - case 379: -#line 1522 "./util/configparser.y" - { - OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_algo_downgrade = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4282 "util/configparser.c" - break; - - case 380: -#line 1532 "./util/configparser.y" - { - OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_caps_bits_for_id = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4295 "util/configparser.c" - break; - - case 381: -#line 1542 "./util/configparser.y" - { - OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4305 "util/configparser.c" - break; - - case 382: -#line 1549 "./util/configparser.y" - { - OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4315 "util/configparser.c" - break; - - case 383: -#line 1556 "./util/configparser.y" - { - OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4325 "util/configparser.c" - break; - - case 384: -#line 1563 "./util/configparser.y" - { - OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4337 "util/configparser.c" - break; - - case 385: -#line 1572 "./util/configparser.y" - { - OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4349 "util/configparser.c" - break; - - case 386: -#line 1581 "./util/configparser.y" - { - OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4361 "util/configparser.c" - break; - - case 387: -#line 1590 "./util/configparser.y" - { - OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4373 "util/configparser.c" - break; - - case 388: -#line 1599 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4383 "util/configparser.c" - break; - - case 389: -#line 1606 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->donotquery_localhost = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4396 "util/configparser.c" - break; - - case 390: -#line 1616 "./util/configparser.y" - { - OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && - strcmp((yyvsp[0].str), "deny_non_local")!=0 && - strcmp((yyvsp[0].str), "refuse_non_local")!=0 && - strcmp((yyvsp[0].str), "allow_setrd")!=0 && - strcmp((yyvsp[0].str), "allow")!=0 && - strcmp((yyvsp[0].str), "allow_snoop")!=0) { - yyerror("expected deny, refuse, deny_non_local, " - "refuse_non_local, allow, allow_setrd or " - "allow_snoop in access control action"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding acl"); - } - } -#line 4419 "util/configparser.c" - break; - - case 391: -#line 1636 "./util/configparser.y" - { - OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->module_conf); - cfg_parser->cfg->module_conf = (yyvsp[0].str); - } -#line 4429 "util/configparser.c" - break; - - case 392: -#line 1643 "./util/configparser.y" - { - OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_date_override = 0; - } else if(strlen((yyvsp[0].str)) == 14) { - cfg_parser->cfg->val_date_override = - cfg_convert_timeval((yyvsp[0].str)); - if(!cfg_parser->cfg->val_date_override) - yyerror("bad date/time specification"); - } else { - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); - } - free((yyvsp[0].str)); - } -#line 4450 "util/configparser.c" - break; - - case 393: -#line 1661 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_sig_skew_min = 0; - } else { - cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_sig_skew_min) - yyerror("number expected"); - } - free((yyvsp[0].str)); - } -#line 4466 "util/configparser.c" - break; - - case 394: -#line 1674 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_sig_skew_max = 0; - } else { - cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_sig_skew_max) - yyerror("number expected"); - } - free((yyvsp[0].str)); - } -#line 4482 "util/configparser.c" - break; - - case 395: -#line 1687 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4494 "util/configparser.c" - break; - - case 396: -#line 1696 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4506 "util/configparser.c" - break; - - case 397: -#line 1705 "./util/configparser.y" - { - OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4518 "util/configparser.c" - break; - - case 398: -#line 1714 "./util/configparser.y" - { - OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4530 "util/configparser.c" - break; - - case 399: -#line 1723 "./util/configparser.y" - { - OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->val_clean_additional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4543 "util/configparser.c" - break; - - case 400: -#line 1733 "./util/configparser.y" - { - OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->val_permissive_mode = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4556 "util/configparser.c" - break; - - case 401: -#line 1743 "./util/configparser.y" - { - OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->aggressive_nsec = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4570 "util/configparser.c" - break; - - case 402: -#line 1754 "./util/configparser.y" - { - OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4582 "util/configparser.c" - break; - - case 403: -#line 1763 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4594 "util/configparser.c" - break; - - case 404: -#line 1772 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4606 "util/configparser.c" - break; - - case 405: -#line 1781 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4618 "util/configparser.c" - break; - - case 406: -#line 1790 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4630 "util/configparser.c" - break; - - case 407: -#line 1799 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4642 "util/configparser.c" - break; - - case 408: -#line 1808 "./util/configparser.y" - { - OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); -#if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0); - if(fake_dsa) - log_warn("test option fake_dsa is enabled"); -#endif - free((yyvsp[0].str)); - } -#line 4658 "util/configparser.c" - break; - - case 409: -#line 1821 "./util/configparser.y" - { - OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); -#if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0); - if(fake_sha1) - log_warn("test option fake_sha1 is enabled"); -#endif - free((yyvsp[0].str)); - } -#line 4674 "util/configparser.c" - break; - - case 410: -#line 1834 "./util/configparser.y" - { - OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4686 "util/configparser.c" - break; - - case 411: -#line 1843 "./util/configparser.y" - { - OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->val_nsec3_key_iterations); - cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); - } -#line 4696 "util/configparser.c" - break; - - case 412: -#line 1850 "./util/configparser.y" - { - OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4708 "util/configparser.c" - break; - - case 413: -#line 1859 "./util/configparser.y" - { - OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4720 "util/configparser.c" - break; - - case 414: -#line 1868 "./util/configparser.y" - { - OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4732 "util/configparser.c" - break; - - case 415: -#line 1877 "./util/configparser.y" - { - OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->permit_small_holddown = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4745 "util/configparser.c" - break; - - case 416: -#line 1886 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4756 "util/configparser.c" - break; - - case 417: -#line 1894 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4772 "util/configparser.c" - break; - - case 418: -#line 1907 "./util/configparser.y" - { - OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4783 "util/configparser.c" - break; - - case 419: -#line 1915 "./util/configparser.y" - { - OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 - && strcmp((yyvsp[0].str), "inform_redirect") != 0 - && strcmp((yyvsp[0].str), "ipset") != 0) { - yyerror("local-zone type: expected static, deny, " - "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny, " - "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, noview " - ", nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_nodefault, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_ipset, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#endif - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding local-zone"); - } - } -#line 4827 "util/configparser.c" - break; - - case 420: -#line 1956 "./util/configparser.y" - { - OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) - fatal_exit("out of memory adding local-data"); - } -#line 4837 "util/configparser.c" - break; - - case 421: -#line 1963 "./util/configparser.y" - { - char* ptr; - OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); - if(ptr) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_data, ptr)) - fatal_exit("out of memory adding local-data"); - } else { - yyerror("local-data-ptr could not be reversed"); - } - } -#line 4855 "util/configparser.c" - break; - - case 422: -#line 1978 "./util/configparser.y" - { - OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->minimal_responses = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4868 "util/configparser.c" - break; - - case 423: -#line 1988 "./util/configparser.y" - { - OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->rrset_roundrobin = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4881 "util/configparser.c" - break; - - case 424: -#line 1998 "./util/configparser.y" - { - OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4891 "util/configparser.c" - break; - - case 425: -#line 2005 "./util/configparser.y" - { - OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4901 "util/configparser.c" - break; - - case 426: -#line 2012 "./util/configparser.y" - { - OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dns64_prefix); - cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); - } -#line 4911 "util/configparser.c" - break; - - case 427: -#line 2019 "./util/configparser.y" - { - OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4923 "util/configparser.c" - break; - - case 428: -#line 2028 "./util/configparser.y" - { - OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, - (yyvsp[0].str))) - fatal_exit("out of memory adding dns64-ignore-aaaa"); - } -#line 4934 "util/configparser.c" - break; - - case 429: -#line 2036 "./util/configparser.y" - { - char* p, *s = (yyvsp[0].str); - OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); - while((p=strsep(&s, " \t\n")) != NULL) { - if(*p) { - if(!config_add_tag(cfg_parser->cfg, p)) - yyerror("could not define-tag, " - "out of memory"); - } - } - free((yyvsp[0].str)); - } -#line 4951 "util/configparser.c" - break; - - case 430: -#line 2050 "./util/configparser.y" - { - size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str))); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); - } - if(bitlist) { - if(!cfg_strbytelist_insert( - &cfg_parser->cfg->local_zone_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 4975 "util/configparser.c" - break; - - case 431: -#line 2071 "./util/configparser.y" - { - size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str))); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); - } - if(bitlist) { - if(!cfg_strbytelist_insert( - &cfg_parser->cfg->acl_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 4999 "util/configparser.c" - break; - - case 432: -#line 2092 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5014 "util/configparser.c" - break; - - case 433: -#line 2104 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5029 "util/configparser.c" - break; - - case 434: -#line 2116 "./util/configparser.y" - { - OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5044 "util/configparser.c" - break; - - case 435: -#line 2128 "./util/configparser.y" - { - OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, - (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - } - } -#line 5056 "util/configparser.c" - break; - - case 436: -#line 2137 "./util/configparser.y" - { - size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str))); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); - } - if(bitlist) { - if(!cfg_strbytelist_insert( - &cfg_parser->cfg->respip_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 5080 "util/configparser.c" - break; - - case 437: -#line 2158 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5092 "util/configparser.c" - break; - - case 438: -#line 2168 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5104 "util/configparser.c" - break; - - case 439: -#line 2177 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5115 "util/configparser.c" - break; - - case 440: -#line 2185 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5126 "util/configparser.c" - break; - - case 441: -#line 2193 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 5142 "util/configparser.c" - break; - - case 442: -#line 2206 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 5158 "util/configparser.c" - break; - - case 443: -#line 2219 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { - yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "ratelimit-for-domain"); - } - } -#line 5176 "util/configparser.c" - break; - - case 444: -#line 2234 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { - yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "ratelimit-below-domain"); - } - } -#line 5194 "util/configparser.c" - break; - - case 445: -#line 2249 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5206 "util/configparser.c" - break; - - case 446: -#line 2258 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5218 "util/configparser.c" - break; - - case 447: -#line 2267 "./util/configparser.y" - { - OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); - free((yyvsp[0].str)); - } -#line 5227 "util/configparser.c" - break; - - case 448: -#line 2273 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) <= 0) - yyerror("number expected"); - else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5239 "util/configparser.c" - break; - - case 449: -#line 2282 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5251 "util/configparser.c" - break; - - case 450: -#line 2291 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5264 "util/configparser.c" - break; - - case 451: -#line 2301 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation_strict = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5277 "util/configparser.c" - break; - - case 452: -#line 2311 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 5293 "util/configparser.c" - break; - - case 453: -#line 2324 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 5309 "util/configparser.c" - break; - - case 454: -#line 2337 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ipsecmod_hook); - cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5324 "util/configparser.c" - break; - - case 455: -#line 2349 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5341 "util/configparser.c" - break; - - case 456: -#line 2363 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) - yyerror("out of memory"); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5356 "util/configparser.c" - break; - - case 457: -#line 2375 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5373 "util/configparser.c" - break; - - case 458: -#line 2389 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->stubs->name) - yyerror("stub name override, there must be one name " - "for one stub-zone"); - free(cfg_parser->cfg->stubs->name); - cfg_parser->cfg->stubs->name = (yyvsp[0].str); - } -#line 5386 "util/configparser.c" - break; - - case 459: -#line 2399 "./util/configparser.y" - { - OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5396 "util/configparser.c" - break; - - case 460: -#line 2406 "./util/configparser.y" - { - OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5406 "util/configparser.c" - break; - - case 461: -#line 2413 "./util/configparser.y" - { - OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5418 "util/configparser.c" - break; - - case 462: -#line 2422 "./util/configparser.y" - { - OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5430 "util/configparser.c" - break; - - case 463: -#line 2431 "./util/configparser.y" - { - OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5443 "util/configparser.c" - break; - - case 464: -#line 2441 "./util/configparser.y" - { - OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isprime = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5456 "util/configparser.c" - break; - - case 465: -#line 2451 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->forwards->name) - yyerror("forward name override, there must be one " - "name for one forward-zone"); - free(cfg_parser->cfg->forwards->name); - cfg_parser->cfg->forwards->name = (yyvsp[0].str); - } -#line 5469 "util/configparser.c" - break; - - case 466: -#line 2461 "./util/configparser.y" - { - OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5479 "util/configparser.c" - break; - - case 467: -#line 2468 "./util/configparser.y" - { - OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5489 "util/configparser.c" - break; - - case 468: -#line 2475 "./util/configparser.y" - { - OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5501 "util/configparser.c" - break; - - case 469: -#line 2484 "./util/configparser.y" - { - OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5513 "util/configparser.c" - break; - - case 470: -#line 2493 "./util/configparser.y" - { - OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5526 "util/configparser.c" - break; - - case 471: -#line 2503 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->auths->name) - yyerror("auth name override, there must be one name " - "for one auth-zone"); - free(cfg_parser->cfg->auths->name); - cfg_parser->cfg->auths->name = (yyvsp[0].str); - } -#line 5539 "util/configparser.c" - break; - - case 472: -#line 2513 "./util/configparser.y" - { - OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->zonefile); - cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); - } -#line 5549 "util/configparser.c" - break; - - case 473: -#line 2520 "./util/configparser.y" - { - OUTYY(("P(master:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5559 "util/configparser.c" - break; - - case 474: -#line 2527 "./util/configparser.y" - { - OUTYY(("P(url:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5569 "util/configparser.c" - break; - - case 475: -#line 2534 "./util/configparser.y" - { - OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5580 "util/configparser.c" - break; - - case 476: -#line 2542 "./util/configparser.y" - { - OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->for_downstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5593 "util/configparser.c" - break; - - case 477: -#line 2552 "./util/configparser.y" - { - OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->for_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5606 "util/configparser.c" - break; - - case 478: -#line 2562 "./util/configparser.y" - { - OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->fallback_enabled = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5619 "util/configparser.c" - break; - - case 479: -#line 2572 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->views->name) - yyerror("view name override, there must be one " - "name for one view"); - free(cfg_parser->cfg->views->name); - cfg_parser->cfg->views->name = (yyvsp[0].str); - } -#line 5632 "util/configparser.c" - break; - - case 480: -#line 2582 "./util/configparser.y" - { - OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) { - yyerror("local-zone type: expected static, deny, " - "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny, " - "always_transparent, always_refuse, " - "always_nxdomain, noview or nodefault"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_nodefault, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_ipset, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#endif - } else { - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding local-zone"); - } - } -#line 5674 "util/configparser.c" - break; - - case 481: -#line 2621 "./util/configparser.y" - { - OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding per-view " - "response-ip action"); - } -#line 5687 "util/configparser.c" - break; - - case 482: -#line 2631 "./util/configparser.y" - { - OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding response-ip-data"); - } -#line 5698 "util/configparser.c" - break; - - case 483: -#line 2639 "./util/configparser.y" - { - OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { - fatal_exit("out of memory adding local-data"); - } - } -#line 5709 "util/configparser.c" - break; - - case 484: -#line 2647 "./util/configparser.y" - { - char* ptr; - OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); - if(ptr) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_data, ptr)) - fatal_exit("out of memory adding local-data"); - } else { - yyerror("local-data-ptr could not be reversed"); - } - } -#line 5727 "util/configparser.c" - break; - - case 485: -#line 2662 "./util/configparser.y" - { - OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5739 "util/configparser.c" - break; - - case 486: -#line 2671 "./util/configparser.y" - { - OUTYY(("\nP(remote-control:)\n")); - } -#line 5747 "util/configparser.c" - break; - - case 497: -#line 2682 "./util/configparser.y" - { - OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->remote_control_enable = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5760 "util/configparser.c" - break; - - case 498: -#line 2692 "./util/configparser.y" - { - OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("control port number expected"); - else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5772 "util/configparser.c" - break; - - case 499: -#line 2701 "./util/configparser.y" - { - OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5782 "util/configparser.c" - break; - - case 500: -#line 2708 "./util/configparser.y" - { - OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5792 "util/configparser.c" - break; - - case 501: -#line 2715 "./util/configparser.y" - { - OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->server_key_file); - cfg_parser->cfg->server_key_file = (yyvsp[0].str); - } -#line 5802 "util/configparser.c" - break; - - case 502: -#line 2722 "./util/configparser.y" - { - OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->server_cert_file); - cfg_parser->cfg->server_cert_file = (yyvsp[0].str); - } -#line 5812 "util/configparser.c" - break; - - case 503: -#line 2729 "./util/configparser.y" - { - OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->control_key_file); - cfg_parser->cfg->control_key_file = (yyvsp[0].str); - } -#line 5822 "util/configparser.c" - break; - - case 504: -#line 2736 "./util/configparser.y" - { - OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->control_cert_file); - cfg_parser->cfg->control_cert_file = (yyvsp[0].str); - } -#line 5832 "util/configparser.c" - break; - - case 505: -#line 2743 "./util/configparser.y" - { - OUTYY(("\nP(dnstap:)\n")); - } -#line 5840 "util/configparser.c" - break; - - case 526: -#line 2763 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5852 "util/configparser.c" - break; - - case 527: -#line 2772 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_socket_path); - cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); - } -#line 5862 "util/configparser.c" - break; - - case 528: -#line 2779 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_ip); - cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); - } -#line 5872 "util/configparser.c" - break; - - case 529: -#line 2786 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5884 "util/configparser.c" - break; - - case 530: -#line 2795 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_server_name); - cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); - } -#line 5894 "util/configparser.c" - break; - - case 531: -#line 2802 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_cert_bundle); - cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); - } -#line 5904 "util/configparser.c" - break; - - case 532: -#line 2809 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_client_key_file); - cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); - } -#line 5914 "util/configparser.c" - break; - - case 533: -#line 2816 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_client_cert_file); - cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); - } -#line 5924 "util/configparser.c" - break; - - case 534: -#line 2823 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5936 "util/configparser.c" - break; - - case 535: -#line 2832 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5948 "util/configparser.c" - break; - - case 536: -#line 2841 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_identity); - cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); - } -#line 5958 "util/configparser.c" - break; - - case 537: -#line 2848 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_version); - cfg_parser->cfg->dnstap_version = (yyvsp[0].str); - } -#line 5968 "util/configparser.c" - break; - - case 538: -#line 2855 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_resolver_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5981 "util/configparser.c" - break; - - case 539: -#line 2865 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_resolver_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5994 "util/configparser.c" - break; - - case 540: -#line 2875 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6007 "util/configparser.c" - break; - - case 541: -#line 2885 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6020 "util/configparser.c" - break; - - case 542: -#line 2895 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6033 "util/configparser.c" - break; - - case 543: -#line 2905 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6046 "util/configparser.c" - break; - - case 544: -#line 2915 "./util/configparser.y" - { - OUTYY(("\nP(python:)\n")); - } -#line 6054 "util/configparser.c" - break; - - case 548: -#line 2924 "./util/configparser.y" - { - OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6064 "util/configparser.c" - break; - - case 549: -#line 2930 "./util/configparser.y" - { - OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); - if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->disable_dnssec_lame_check = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6077 "util/configparser.c" - break; - - case 550: -#line 2940 "./util/configparser.y" - { - OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->log_identity); - cfg_parser->cfg->log_identity = (yyvsp[0].str); - } -#line 6087 "util/configparser.c" - break; - - case 551: -#line 2947 "./util/configparser.y" - { - OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); - if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding response-ip"); - } -#line 6099 "util/configparser.c" - break; - - case 552: -#line 2956 "./util/configparser.y" - { - OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); - if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding response-ip-data"); - } -#line 6110 "util/configparser.c" - break; - - case 553: -#line 2964 "./util/configparser.y" - { - OUTYY(("\nP(dnscrypt:)\n")); - } -#line 6118 "util/configparser.c" - break; - - case 566: -#line 2980 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6130 "util/configparser.c" - break; - - case 567: -#line 2990 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 6142 "util/configparser.c" - break; - - case 568: -#line 2999 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnscrypt_provider); - cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); - } -#line 6152 "util/configparser.c" - break; - - case 569: -#line 3006 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) - log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-provider-cert"); - } -#line 6164 "util/configparser.c" - break; - - case 570: -#line 3015 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); - } -#line 6174 "util/configparser.c" - break; - - case 571: -#line 3022 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) - log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-secret-key"); - } -#line 6186 "util/configparser.c" - break; - - case 572: -#line 3031 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 6197 "util/configparser.c" - break; - - case 573: -#line 3039 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 6213 "util/configparser.c" - break; - - case 574: -#line 3052 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 6224 "util/configparser.c" - break; - - case 575: -#line 3060 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 6240 "util/configparser.c" - break; - - case 576: -#line 3073 "./util/configparser.y" - { - OUTYY(("\nP(cachedb:)\n")); - } -#line 6248 "util/configparser.c" - break; - - case 584: -#line 3083 "./util/configparser.y" - { - #ifdef USE_CACHEDB - OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->cachedb_backend); - cfg_parser->cfg->cachedb_backend = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6263 "util/configparser.c" - break; - - case 585: -#line 3095 "./util/configparser.y" - { - #ifdef USE_CACHEDB - OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->cachedb_secret); - cfg_parser->cfg->cachedb_secret = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6278 "util/configparser.c" - break; - - case 586: -#line 3107 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->redis_server_host); - cfg_parser->cfg->redis_server_host = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6293 "util/configparser.c" - break; - - case 587: -#line 3119 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - int port; - OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); - port = atoi((yyvsp[0].str)); - if(port == 0 || port < 0 || port > 65535) - yyerror("valid redis server port number expected"); - else cfg_parser->cfg->redis_server_port = port; - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 6311 "util/configparser.c" - break; - - case 588: -#line 3134 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("redis timeout value expected"); - else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 6327 "util/configparser.c" - break; - - case 589: -#line 3147 "./util/configparser.y" - { - OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if (atoi((yyvsp[0].str)) < 0) - yyerror("positive number expected"); - else { - if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding tcp connection limit"); - } - } -#line 6341 "util/configparser.c" - break; - - case 590: -#line 3158 "./util/configparser.y" - { - OUTYY(("\nP(ipset:)\n")); - } -#line 6349 "util/configparser.c" - break; - - case 595: -#line 3167 "./util/configparser.y" - { - #ifdef USE_IPSET - OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->ipset_name_v4) - yyerror("ipset name v4 override, there must be one " - "name for ip v4"); - free(cfg_parser->cfg->ipset_name_v4); - cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6367 "util/configparser.c" - break; - - case 596: -#line 3182 "./util/configparser.y" - { - #ifdef USE_IPSET - OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->ipset_name_v6) - yyerror("ipset name v6 override, there must be one " - "name for ip v6"); - free(cfg_parser->cfg->ipset_name_v6); - cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6385 "util/configparser.c" - break; - - -#line 6389 "util/configparser.c" - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH #else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR +#define YYSTACKSIZE 10000 +#define YYMAXDEPTH 10000 #endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ #endif +#define YYINITSTACKSIZE 200 -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} -#line 3196 "./util/configparser.y" - +typedef struct { + unsigned stacksize; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; + YYSTYPE *l_base; + YYSTYPE *l_mark; +} YYSTACKDATA; +/* variables for the parser stack */ +static YYSTACKDATA yystack; +#line 3237 "./util/configparser.y" /* parse helper routines could be here */ static void @@ -6639,3 +1809,3430 @@ validate_respip_action(const char* action) } +#line 1813 "util/configparser.c" + +#if YYDEBUG +#include /* needed for printf */ +#endif + +#include /* needed for malloc, etc */ +#include /* needed for memset */ + +/* allocate initial stack or double stack size, up to YYMAXDEPTH */ +static int yygrowstack(YYSTACKDATA *data) +{ + int i; + unsigned newsize; + YYINT *newss; + YYSTYPE *newvs; + + if ((newsize = data->stacksize) == 0) + newsize = YYINITSTACKSIZE; + else if (newsize >= YYMAXDEPTH) + return YYENOMEM; + else if ((newsize *= 2) > YYMAXDEPTH) + newsize = YYMAXDEPTH; + + i = (int) (data->s_mark - data->s_base); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); + if (newss == 0) + return YYENOMEM; + + data->s_base = newss; + data->s_mark = newss + i; + + newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); + if (newvs == 0) + return YYENOMEM; + + data->l_base = newvs; + data->l_mark = newvs + i; + + data->stacksize = newsize; + data->s_last = data->s_base + newsize - 1; + return 0; +} + +#if YYPURE || defined(YY_NO_LEAKS) +static void yyfreestack(YYSTACKDATA *data) +{ + free(data->s_base); + free(data->l_base); + memset(data, 0, sizeof(*data)); +} +#else +#define yyfreestack(data) /* nothing */ +#endif + +#define YYABORT goto yyabort +#define YYREJECT goto yyabort +#define YYACCEPT goto yyaccept +#define YYERROR goto yyerrlab + +int +YYPARSE_DECL() +{ + int yym, yyn, yystate; +#if YYDEBUG + const char *yys; + + if ((yys = getenv("YYDEBUG")) != 0) + { + yyn = *yys; + if (yyn >= '0' && yyn <= '9') + yydebug = yyn - '0'; + } +#endif + + yynerrs = 0; + yyerrflag = 0; + yychar = YYEMPTY; + yystate = 0; + +#if YYPURE + memset(&yystack, 0, sizeof(yystack)); +#endif + + if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; + yystack.s_mark = yystack.s_base; + yystack.l_mark = yystack.l_base; + yystate = 0; + *yystack.s_mark = 0; + +yyloop: + if ((yyn = yydefred[yystate]) != 0) goto yyreduce; + if (yychar < 0) + { + if ((yychar = YYLEX) < 0) yychar = YYEOF; +#if YYDEBUG + if (yydebug) + { + yys = yyname[YYTRANSLATE(yychar)]; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + } + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, shifting to state %d\n", + YYPREFIX, yystate, yytable[yyn]); +#endif + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) + { + goto yyoverflow; + } + yystate = yytable[yyn]; + *++yystack.s_mark = yytable[yyn]; + *++yystack.l_mark = yylval; + yychar = YYEMPTY; + if (yyerrflag > 0) --yyerrflag; + goto yyloop; + } + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { + yyn = yytable[yyn]; + goto yyreduce; + } + if (yyerrflag) goto yyinrecovery; + + YYERROR_CALL("syntax error"); + + goto yyerrlab; + +yyerrlab: + ++yynerrs; + +yyinrecovery: + if (yyerrflag < 3) + { + yyerrflag = 3; + for (;;) + { + if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, error recovery shifting\ + to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); +#endif + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) + { + goto yyoverflow; + } + yystate = yytable[yyn]; + *++yystack.s_mark = yytable[yyn]; + *++yystack.l_mark = yylval; + goto yyloop; + } + else + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: error recovery discarding state %d\n", + YYPREFIX, *yystack.s_mark); +#endif + if (yystack.s_mark <= yystack.s_base) goto yyabort; + --yystack.s_mark; + --yystack.l_mark; + } + } + } + else + { + if (yychar == YYEOF) goto yyabort; +#if YYDEBUG + if (yydebug) + { + yys = yyname[YYTRANSLATE(yychar)]; + printf("%sdebug: state %d, error recovery discards token %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + yychar = YYEMPTY; + goto yyloop; + } + +yyreduce: +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, reducing by rule %d (%s)\n", + YYPREFIX, yystate, yyn, yyrule[yyn]); +#endif + yym = yylen[yyn]; + if (yym) + yyval = yystack.l_mark[1-yym]; + else + memset(&yyval, 0, sizeof yyval); + switch (yyn) + { +case 15: +#line 191 "./util/configparser.y" + { + OUTYY(("\nP(server:)\n")); + } +break; +case 211: +#line 284 "./util/configparser.y" + { + struct config_stub* s; + OUTYY(("\nP(stub_zone:)\n")); + s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); + if(s) { + s->next = cfg_parser->cfg->stubs; + cfg_parser->cfg->stubs = s; + } else + yyerror("out of memory"); + } +break; +case 221: +#line 301 "./util/configparser.y" + { + struct config_stub* s; + OUTYY(("\nP(forward_zone:)\n")); + s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); + if(s) { + s->next = cfg_parser->cfg->forwards; + cfg_parser->cfg->forwards = s; + } else + yyerror("out of memory"); + } +break; +case 230: +#line 318 "./util/configparser.y" + { + struct config_view* s; + OUTYY(("\nP(view:)\n")); + s = (struct config_view*)calloc(1, sizeof(struct config_view)); + if(s) { + s->next = cfg_parser->cfg->views; + if(s->next && !s->next->name) + yyerror("view without name"); + cfg_parser->cfg->views = s; + } else + yyerror("out of memory"); + } +break; +case 240: +#line 337 "./util/configparser.y" + { + struct config_auth* s; + OUTYY(("\nP(auth_zone:)\n")); + s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); + if(s) { + s->next = cfg_parser->cfg->auths; + cfg_parser->cfg->auths = s; + /* defaults for auth zone */ + s->for_downstream = 1; + s->for_upstream = 1; + s->fallback_enabled = 0; + s->isrpz = 0; + } else + yyerror("out of memory"); + } +break; +case 251: +#line 361 "./util/configparser.y" + { + uint8_t* bitlist; + size_t len = 0; + OUTYY(("P(server_local_zone_tag:%s)\n", yystack.l_mark[0].str)); + bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + } + if(bitlist) { + cfg_parser->cfg->auths->rpz_taglist = bitlist; + cfg_parser->cfg->auths->rpz_taglistlen = len; + + } + } +break; +case 252: +#line 380 "./util/configparser.y" + { + OUTYY(("P(rpz_action_override:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "nxdomain")!=0 && strcmp(yystack.l_mark[0].str, "nodata")!=0 && + strcmp(yystack.l_mark[0].str, "passthru")!=0 && strcmp(yystack.l_mark[0].str, "drop")!=0 && + strcmp(yystack.l_mark[0].str, "cname")!=0 && strcmp(yystack.l_mark[0].str, "disabled")!=0) { + yyerror("rpz-action-override action: expected nxdomain, " + "nodata, passthru, drop, cname or disabled"); + free(yystack.l_mark[0].str); + cfg_parser->cfg->auths->rpz_action_override = NULL; + } + else { + cfg_parser->cfg->auths->rpz_action_override = yystack.l_mark[0].str; + } + } +break; +case 253: +#line 397 "./util/configparser.y" + { + OUTYY(("P(rpz_cname_override:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->auths->rpz_cname); + cfg_parser->cfg->auths->rpz_cname = yystack.l_mark[0].str; + } +break; +case 254: +#line 405 "./util/configparser.y" + { + OUTYY(("P(rpz_log:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->rpz_log = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 255: +#line 415 "./util/configparser.y" + { + OUTYY(("P(rpz_log_name:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->auths->rpz_log_name); + cfg_parser->cfg->auths->rpz_log_name = yystack.l_mark[0].str; + } +break; +case 256: +#line 423 "./util/configparser.y" + { + struct config_auth* s; + OUTYY(("\nP(rpz:)\n")); + s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); + if(s) { + s->next = cfg_parser->cfg->auths; + cfg_parser->cfg->auths = s; + /* defaults for RPZ auth zone */ + s->for_downstream = 0; + s->for_upstream = 0; + s->fallback_enabled = 0; + s->isrpz = 1; + } else + yyerror("out of memory"); + } +break; +case 269: +#line 446 "./util/configparser.y" + { + OUTYY(("P(server_num_threads:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->num_threads = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 270: +#line 455 "./util/configparser.y" + { + OUTYY(("P(server_verbosity:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->verbosity = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 271: +#line 464 "./util/configparser.y" + { + OUTYY(("P(server_statistics_interval:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) + cfg_parser->cfg->stat_interval = 0; + else if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->stat_interval = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 272: +#line 475 "./util/configparser.y" + { + OUTYY(("P(server_statistics_cumulative:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_cumulative = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 273: +#line 484 "./util/configparser.y" + { + OUTYY(("P(server_extended_statistics:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_extended = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 274: +#line 493 "./util/configparser.y" + { + OUTYY(("P(server_shm_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->shm_enable = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 275: +#line 502 "./util/configparser.y" + { + OUTYY(("P(server_shm_key:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) + cfg_parser->cfg->shm_key = 0; + else if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->shm_key = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 276: +#line 513 "./util/configparser.y" + { + OUTYY(("P(server_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 277: +#line 522 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_send_client_subnet:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, yystack.l_mark[0].str)) + fatal_exit("out of memory adding client-subnet"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 278: +#line 534 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_zone:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, + yystack.l_mark[0].str)) + fatal_exit("out of memory adding client-subnet-zone"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 279: +#line 548 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_always_forward:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->client_subnet_always_forward = + (strcmp(yystack.l_mark[0].str, "yes")==0); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 280: +#line 563 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(client_subnet_opcode:%s)\n", yystack.l_mark[0].str)); + OUTYY(("P(Deprecated option, ignoring)\n")); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 281: +#line 574 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv4:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 32) + cfg_parser->cfg->max_client_subnet_ipv4 = 32; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_client_subnet_ipv4 = 0; + else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 282: +#line 591 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv6:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 128) + cfg_parser->cfg->max_client_subnet_ipv6 = 128; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_client_subnet_ipv6 = 0; + else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 283: +#line 608 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(min_client_subnet_ipv4:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 32) + cfg_parser->cfg->min_client_subnet_ipv4 = 32; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->min_client_subnet_ipv4 = 0; + else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 284: +#line 625 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(min_client_subnet_ipv6:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 128) + cfg_parser->cfg->min_client_subnet_ipv6 = 128; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->min_client_subnet_ipv6 = 0; + else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 285: +#line 642 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv4 ECS tree size expected"); + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0; + else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 286: +#line 657 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv6 ECS tree size expected"); + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0; + else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 287: +#line 672 "./util/configparser.y" + { + OUTYY(("P(server_interface:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->num_ifs == 0) + cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); + else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, + (cfg_parser->cfg->num_ifs+1)*sizeof(char*)); + if(!cfg_parser->cfg->ifs) + yyerror("out of memory"); + else + cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = yystack.l_mark[0].str; + } +break; +case 288: +#line 685 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_interface:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->num_out_ifs == 0) + cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); + else cfg_parser->cfg->out_ifs = realloc( + cfg_parser->cfg->out_ifs, + (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*)); + if(!cfg_parser->cfg->out_ifs) + yyerror("out of memory"); + else + cfg_parser->cfg->out_ifs[ + cfg_parser->cfg->num_out_ifs++] = yystack.l_mark[0].str; + } +break; +case 289: +#line 700 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_range:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_num_ports = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 290: +#line 709 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_port_permit:%s)\n", yystack.l_mark[0].str)); + if(!cfg_mark_ports(yystack.l_mark[0].str, 1, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); + free(yystack.l_mark[0].str); + } +break; +case 291: +#line 718 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_port_avoid:%s)\n", yystack.l_mark[0].str)); + if(!cfg_mark_ports(yystack.l_mark[0].str, 0, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); + free(yystack.l_mark[0].str); + } +break; +case 292: +#line 727 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_num_tcp:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_num_tcp = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 293: +#line 736 "./util/configparser.y" + { + OUTYY(("P(server_incoming_num_tcp:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->incoming_num_tcp = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 294: +#line 745 "./util/configparser.y" + { + OUTYY(("P(server_interface_automatic:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->if_automatic = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 295: +#line 754 "./util/configparser.y" + { + OUTYY(("P(server_do_ip4:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 296: +#line 763 "./util/configparser.y" + { + OUTYY(("P(server_do_ip6:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 297: +#line 772 "./util/configparser.y" + { + OUTYY(("P(server_do_udp:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_udp = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 298: +#line 781 "./util/configparser.y" + { + OUTYY(("P(server_do_tcp:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_tcp = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 299: +#line 790 "./util/configparser.y" + { + OUTYY(("P(server_prefer_ip4:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefer_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 300: +#line 799 "./util/configparser.y" + { + OUTYY(("P(server_prefer_ip6:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefer_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 301: +#line 808 "./util/configparser.y" + { + OUTYY(("P(server_tcp_mss:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 302: +#line 817 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_tcp_mss:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_tcp_mss = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 303: +#line 826 "./util/configparser.y" + { + OUTYY(("P(server_tcp_idle_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) > 120000) + cfg_parser->cfg->tcp_idle_timeout = 120000; + else if (atoi(yystack.l_mark[0].str) < 1) + cfg_parser->cfg->tcp_idle_timeout = 1; + else cfg_parser->cfg->tcp_idle_timeout = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 304: +#line 839 "./util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_tcp_keepalive = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 305: +#line 848 "./util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) > 6553500) + cfg_parser->cfg->tcp_keepalive_timeout = 6553500; + else if (atoi(yystack.l_mark[0].str) < 1) + cfg_parser->cfg->tcp_keepalive_timeout = 0; + else cfg_parser->cfg->tcp_keepalive_timeout = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 306: +#line 861 "./util/configparser.y" + { + OUTYY(("P(server_tcp_upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->tcp_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 307: +#line 870 "./util/configparser.y" + { + OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 308: +#line 879 "./util/configparser.y" + { + OUTYY(("P(server_ssl_upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ssl_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 309: +#line 888 "./util/configparser.y" + { + OUTYY(("P(server_ssl_service_key:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->ssl_service_key); + cfg_parser->cfg->ssl_service_key = yystack.l_mark[0].str; + } +break; +case 310: +#line 895 "./util/configparser.y" + { + OUTYY(("P(server_ssl_service_pem:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->ssl_service_pem); + cfg_parser->cfg->ssl_service_pem = yystack.l_mark[0].str; + } +break; +case 311: +#line 902 "./util/configparser.y" + { + OUTYY(("P(server_ssl_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->ssl_port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 312: +#line 911 "./util/configparser.y" + { + OUTYY(("P(server_tls_cert_bundle:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->tls_cert_bundle); + cfg_parser->cfg->tls_cert_bundle = yystack.l_mark[0].str; + } +break; +case 313: +#line 918 "./util/configparser.y" + { + OUTYY(("P(server_tls_win_cert:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->tls_win_cert = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 314: +#line 927 "./util/configparser.y" + { + OUTYY(("P(server_tls_additional_port:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, + yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 315: +#line 935 "./util/configparser.y" + { + OUTYY(("P(server_tls_ciphers:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->tls_ciphers); + cfg_parser->cfg->tls_ciphers = yystack.l_mark[0].str; + } +break; +case 316: +#line 942 "./util/configparser.y" + { + OUTYY(("P(server_tls_ciphersuites:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->tls_ciphersuites); + cfg_parser->cfg->tls_ciphersuites = yystack.l_mark[0].str; + } +break; +case 317: +#line 949 "./util/configparser.y" + { + OUTYY(("P(server_tls_session_ticket_keys:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, + yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 318: +#line 957 "./util/configparser.y" + { + OUTYY(("P(server_use_systemd:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_systemd = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 319: +#line 966 "./util/configparser.y" + { + OUTYY(("P(server_do_daemonize:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_daemonize = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 320: +#line 975 "./util/configparser.y" + { + OUTYY(("P(server_use_syslog:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_syslog = (strcmp(yystack.l_mark[0].str, "yes")==0); +#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) + if(strcmp(yystack.l_mark[0].str, "yes") == 0) + yyerror("no syslog services are available. " + "(reconfigure and compile to add)"); +#endif + free(yystack.l_mark[0].str); + } +break; +case 321: +#line 989 "./util/configparser.y" + { + OUTYY(("P(server_log_time_ascii:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_time_ascii = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 322: +#line 998 "./util/configparser.y" + { + OUTYY(("P(server_log_queries:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_queries = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 323: +#line 1007 "./util/configparser.y" + { + OUTYY(("P(server_log_replies:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_replies = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 324: +#line 1016 "./util/configparser.y" + { + OUTYY(("P(server_log_tag_queryreply:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_tag_queryreply = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 325: +#line 1025 "./util/configparser.y" + { + OUTYY(("P(server_log_servfail:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_servfail = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 326: +#line 1034 "./util/configparser.y" + { + OUTYY(("P(server_log_local_actions:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_local_actions = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 327: +#line 1043 "./util/configparser.y" + { + OUTYY(("P(server_chroot:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->chrootdir); + cfg_parser->cfg->chrootdir = yystack.l_mark[0].str; + } +break; +case 328: +#line 1050 "./util/configparser.y" + { + OUTYY(("P(server_username:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->username); + cfg_parser->cfg->username = yystack.l_mark[0].str; + } +break; +case 329: +#line 1057 "./util/configparser.y" + { + OUTYY(("P(server_directory:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->directory); + cfg_parser->cfg->directory = yystack.l_mark[0].str; + /* change there right away for includes relative to this */ + if(yystack.l_mark[0].str[0]) { + char* d; +#ifdef UB_ON_WINDOWS + w_config_adjust_directory(cfg_parser->cfg); +#endif + d = cfg_parser->cfg->directory; + /* adjust directory if we have already chroot, + * like, we reread after sighup */ + if(cfg_parser->chroot && cfg_parser->chroot[0] && + strncmp(d, cfg_parser->chroot, strlen( + cfg_parser->chroot)) == 0) + d += strlen(cfg_parser->chroot); + if(d[0]) { + if(chdir(d)) + log_err("cannot chdir to directory: %s (%s)", + d, strerror(errno)); + } + } + } +break; +case 330: +#line 1083 "./util/configparser.y" + { + OUTYY(("P(server_logfile:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->logfile); + cfg_parser->cfg->logfile = yystack.l_mark[0].str; + cfg_parser->cfg->use_syslog = 0; + } +break; +case 331: +#line 1091 "./util/configparser.y" + { + OUTYY(("P(server_pidfile:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->pidfile); + cfg_parser->cfg->pidfile = yystack.l_mark[0].str; + } +break; +case 332: +#line 1098 "./util/configparser.y" + { + OUTYY(("P(server_root_hints:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 333: +#line 1105 "./util/configparser.y" + { + OUTYY(("P(server_dlv_anchor_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dlv_anchor_file); + cfg_parser->cfg->dlv_anchor_file = yystack.l_mark[0].str; + } +break; +case 334: +#line 1112 "./util/configparser.y" + { + OUTYY(("P(server_dlv_anchor:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 335: +#line 1119 "./util/configparser.y" + { + OUTYY(("P(server_auto_trust_anchor_file:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + auto_trust_anchor_file_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 336: +#line 1127 "./util/configparser.y" + { + OUTYY(("P(server_trust_anchor_file:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + trust_anchor_file_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 337: +#line 1135 "./util/configparser.y" + { + OUTYY(("P(server_trusted_keys_file:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + trusted_keys_file_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 338: +#line 1143 "./util/configparser.y" + { + OUTYY(("P(server_trust_anchor:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 339: +#line 1150 "./util/configparser.y" + { + OUTYY(("P(server_trust_anchor_signaling:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->trust_anchor_signaling = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 340: +#line 1161 "./util/configparser.y" + { + OUTYY(("P(server_root_key_sentinel:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->root_key_sentinel = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 341: +#line 1172 "./util/configparser.y" + { + OUTYY(("P(server_domain_insecure:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 342: +#line 1179 "./util/configparser.y" + { + OUTYY(("P(server_hide_identity:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_identity = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 343: +#line 1188 "./util/configparser.y" + { + OUTYY(("P(server_hide_version:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_version = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 344: +#line 1197 "./util/configparser.y" + { + OUTYY(("P(server_hide_trustanchor:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_trustanchor = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 345: +#line 1206 "./util/configparser.y" + { + OUTYY(("P(server_identity:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->identity); + cfg_parser->cfg->identity = yystack.l_mark[0].str; + } +break; +case 346: +#line 1213 "./util/configparser.y" + { + OUTYY(("P(server_version:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->version); + cfg_parser->cfg->version = yystack.l_mark[0].str; + } +break; +case 347: +#line 1220 "./util/configparser.y" + { + OUTYY(("P(server_so_rcvbuf:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_rcvbuf)) + yyerror("buffer size expected"); + free(yystack.l_mark[0].str); + } +break; +case 348: +#line 1228 "./util/configparser.y" + { + OUTYY(("P(server_so_sndbuf:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_sndbuf)) + yyerror("buffer size expected"); + free(yystack.l_mark[0].str); + } +break; +case 349: +#line 1236 "./util/configparser.y" + { + OUTYY(("P(server_so_reuseport:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->so_reuseport = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 350: +#line 1246 "./util/configparser.y" + { + OUTYY(("P(server_ip_transparent:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_transparent = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 351: +#line 1256 "./util/configparser.y" + { + OUTYY(("P(server_ip_freebind:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_freebind = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 352: +#line 1266 "./util/configparser.y" + { + OUTYY(("P(server_ip_dscp:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) > 63) + yyerror("value too large (max 63)"); + else if (atoi(yystack.l_mark[0].str) < 0) + yyerror("value too small (min 0)"); + else + cfg_parser->cfg->ip_dscp = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 353: +#line 1280 "./util/configparser.y" + { + OUTYY(("P(server_stream_wait_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->stream_wait_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 354: +#line 1288 "./util/configparser.y" + { + OUTYY(("P(server_edns_buffer_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) < 12) + yyerror("edns buffer size too small"); + else if (atoi(yystack.l_mark[0].str) > 65535) + cfg_parser->cfg->edns_buffer_size = 65535; + else cfg_parser->cfg->edns_buffer_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 355: +#line 1301 "./util/configparser.y" + { + OUTYY(("P(server_msg_buffer_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) < 4096) + yyerror("message buffer size too small (use 4096)"); + else cfg_parser->cfg->msg_buffer_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 356: +#line 1312 "./util/configparser.y" + { + OUTYY(("P(server_msg_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->msg_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 357: +#line 1320 "./util/configparser.y" + { + OUTYY(("P(server_msg_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->msg_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 358: +#line 1333 "./util/configparser.y" + { + OUTYY(("P(server_num_queries_per_thread:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->num_queries_per_thread = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 359: +#line 1342 "./util/configparser.y" + { + OUTYY(("P(server_jostle_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->jostle_time = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 360: +#line 1351 "./util/configparser.y" + { + OUTYY(("P(server_delay_close:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->delay_close = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 361: +#line 1360 "./util/configparser.y" + { + OUTYY(("P(server_unblock_lan_zones:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->unblock_lan_zones = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 362: +#line 1370 "./util/configparser.y" + { + OUTYY(("P(server_insecure_lan_zones:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->insecure_lan_zones = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 363: +#line 1380 "./util/configparser.y" + { + OUTYY(("P(server_rrset_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->rrset_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 364: +#line 1388 "./util/configparser.y" + { + OUTYY(("P(server_rrset_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->rrset_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 365: +#line 1401 "./util/configparser.y" + { + OUTYY(("P(server_infra_host_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->host_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 366: +#line 1410 "./util/configparser.y" + { + OUTYY(("P(server_infra_lame_ttl:%s)\n", yystack.l_mark[0].str)); + verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " + "removed, use infra-host-ttl)", yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 367: +#line 1418 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_numhosts:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->infra_cache_numhosts = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 368: +#line 1427 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_lame_size:%s)\n", yystack.l_mark[0].str)); + verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " + "(option removed, use infra-cache-numhosts)", yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 369: +#line 1435 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->infra_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 370: +#line 1448 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_min_rtt:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->infra_cache_min_rtt = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 371: +#line 1457 "./util/configparser.y" + { + OUTYY(("P(server_target_fetch_policy:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->target_fetch_policy); + cfg_parser->cfg->target_fetch_policy = yystack.l_mark[0].str; + } +break; +case 372: +#line 1464 "./util/configparser.y" + { + OUTYY(("P(server_harden_short_bufsize:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_short_bufsize = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 373: +#line 1474 "./util/configparser.y" + { + OUTYY(("P(server_harden_large_queries:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_large_queries = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 374: +#line 1484 "./util/configparser.y" + { + OUTYY(("P(server_harden_glue:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_glue = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 375: +#line 1494 "./util/configparser.y" + { + OUTYY(("P(server_harden_dnssec_stripped:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_dnssec_stripped = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 376: +#line 1504 "./util/configparser.y" + { + OUTYY(("P(server_harden_below_nxdomain:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_below_nxdomain = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 377: +#line 1514 "./util/configparser.y" + { + OUTYY(("P(server_harden_referral_path:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_referral_path = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 378: +#line 1524 "./util/configparser.y" + { + OUTYY(("P(server_harden_algo_downgrade:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_algo_downgrade = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 379: +#line 1534 "./util/configparser.y" + { + OUTYY(("P(server_use_caps_for_id:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_caps_bits_for_id = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 380: +#line 1544 "./util/configparser.y" + { + OUTYY(("P(server_caps_whitelist:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 381: +#line 1551 "./util/configparser.y" + { + OUTYY(("P(server_private_address:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 382: +#line 1558 "./util/configparser.y" + { + OUTYY(("P(server_private_domain:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 383: +#line 1565 "./util/configparser.y" + { + OUTYY(("P(server_prefetch:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefetch = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 384: +#line 1574 "./util/configparser.y" + { + OUTYY(("P(server_prefetch_key:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefetch_key = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 385: +#line 1583 "./util/configparser.y" + { + OUTYY(("P(server_deny_any:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->deny_any = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 386: +#line 1592 "./util/configparser.y" + { + OUTYY(("P(server_unwanted_reply_threshold:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->unwanted_threshold = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 387: +#line 1601 "./util/configparser.y" + { + OUTYY(("P(server_do_not_query_address:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 388: +#line 1608 "./util/configparser.y" + { + OUTYY(("P(server_do_not_query_localhost:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->donotquery_localhost = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 389: +#line 1618 "./util/configparser.y" + { + OUTYY(("P(server_access_control:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "deny")!=0 && strcmp(yystack.l_mark[0].str, "refuse")!=0 && + strcmp(yystack.l_mark[0].str, "deny_non_local")!=0 && + strcmp(yystack.l_mark[0].str, "refuse_non_local")!=0 && + strcmp(yystack.l_mark[0].str, "allow_setrd")!=0 && + strcmp(yystack.l_mark[0].str, "allow")!=0 && + strcmp(yystack.l_mark[0].str, "allow_snoop")!=0) { + yyerror("expected deny, refuse, deny_non_local, " + "refuse_non_local, allow, allow_setrd or " + "allow_snoop in access control action"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding acl"); + } + } +break; +case 390: +#line 1638 "./util/configparser.y" + { + OUTYY(("P(server_module_conf:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->module_conf); + cfg_parser->cfg->module_conf = yystack.l_mark[0].str; + } +break; +case 391: +#line 1645 "./util/configparser.y" + { + OUTYY(("P(server_val_override_date:%s)\n", yystack.l_mark[0].str)); + if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) { + cfg_parser->cfg->val_date_override = 0; + } else if(strlen(yystack.l_mark[0].str) == 14) { + cfg_parser->cfg->val_date_override = + cfg_convert_timeval(yystack.l_mark[0].str); + if(!cfg_parser->cfg->val_date_override) + yyerror("bad date/time specification"); + } else { + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + cfg_parser->cfg->val_date_override = atoi(yystack.l_mark[0].str); + } + free(yystack.l_mark[0].str); + } +break; +case 392: +#line 1663 "./util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_min:%s)\n", yystack.l_mark[0].str)); + if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) { + cfg_parser->cfg->val_sig_skew_min = 0; + } else { + cfg_parser->cfg->val_sig_skew_min = atoi(yystack.l_mark[0].str); + if(!cfg_parser->cfg->val_sig_skew_min) + yyerror("number expected"); + } + free(yystack.l_mark[0].str); + } +break; +case 393: +#line 1676 "./util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_max:%s)\n", yystack.l_mark[0].str)); + if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) { + cfg_parser->cfg->val_sig_skew_max = 0; + } else { + cfg_parser->cfg->val_sig_skew_max = atoi(yystack.l_mark[0].str); + if(!cfg_parser->cfg->val_sig_skew_max) + yyerror("number expected"); + } + free(yystack.l_mark[0].str); + } +break; +case 394: +#line 1689 "./util/configparser.y" + { + OUTYY(("P(server_cache_max_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 395: +#line 1698 "./util/configparser.y" + { + OUTYY(("P(server_cache_max_negative_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_negative_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 396: +#line 1707 "./util/configparser.y" + { + OUTYY(("P(server_cache_min_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->min_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 397: +#line 1716 "./util/configparser.y" + { + OUTYY(("P(server_bogus_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->bogus_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 398: +#line 1725 "./util/configparser.y" + { + OUTYY(("P(server_val_clean_additional:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->val_clean_additional = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 399: +#line 1735 "./util/configparser.y" + { + OUTYY(("P(server_val_permissive_mode:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->val_permissive_mode = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 400: +#line 1745 "./util/configparser.y" + { + OUTYY(("P(server_aggressive_nsec:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->aggressive_nsec = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 401: +#line 1756 "./util/configparser.y" + { + OUTYY(("P(server_ignore_cd_flag:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ignore_cd = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 402: +#line 1765 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_expired = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 403: +#line 1774 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 404: +#line 1783 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 405: +#line 1792 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_reply_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 406: +#line 1801 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_client_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_client_timeout = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 407: +#line 1810 "./util/configparser.y" + { + OUTYY(("P(server_fake_dsa:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); +#if defined(HAVE_SSL) || defined(HAVE_NETTLE) + else fake_dsa = (strcmp(yystack.l_mark[0].str, "yes")==0); + if(fake_dsa) + log_warn("test option fake_dsa is enabled"); +#endif + free(yystack.l_mark[0].str); + } +break; +case 408: +#line 1823 "./util/configparser.y" + { + OUTYY(("P(server_fake_sha1:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); +#if defined(HAVE_SSL) || defined(HAVE_NETTLE) + else fake_sha1 = (strcmp(yystack.l_mark[0].str, "yes")==0); + if(fake_sha1) + log_warn("test option fake_sha1 is enabled"); +#endif + free(yystack.l_mark[0].str); + } +break; +case 409: +#line 1836 "./util/configparser.y" + { + OUTYY(("P(server_val_log_level:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->val_log_level = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 410: +#line 1845 "./util/configparser.y" + { + OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->val_nsec3_key_iterations); + cfg_parser->cfg->val_nsec3_key_iterations = yystack.l_mark[0].str; + } +break; +case 411: +#line 1852 "./util/configparser.y" + { + OUTYY(("P(server_add_holddown:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->add_holddown = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 412: +#line 1861 "./util/configparser.y" + { + OUTYY(("P(server_del_holddown:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->del_holddown = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 413: +#line 1870 "./util/configparser.y" + { + OUTYY(("P(server_keep_missing:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->keep_missing = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 414: +#line 1879 "./util/configparser.y" + { + OUTYY(("P(server_permit_small_holddown:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->permit_small_holddown = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 415: +#line 1888 "./util/configparser.y" + { + OUTYY(("P(server_key_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->key_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 416: +#line 1896 "./util/configparser.y" + { + OUTYY(("P(server_key_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->key_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 417: +#line 1909 "./util/configparser.y" + { + OUTYY(("P(server_neg_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->neg_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 418: +#line 1917 "./util/configparser.y" + { + OUTYY(("P(server_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 && + strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 && + strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0 + && strcmp(yystack.l_mark[0].str, "typetransparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_transparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_refuse")!=0 + && strcmp(yystack.l_mark[0].str, "always_nxdomain")!=0 + && strcmp(yystack.l_mark[0].str, "noview")!=0 + && strcmp(yystack.l_mark[0].str, "inform")!=0 && strcmp(yystack.l_mark[0].str, "inform_deny")!=0 + && strcmp(yystack.l_mark[0].str, "inform_redirect") != 0 + && strcmp(yystack.l_mark[0].str, "ipset") != 0) { + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "inform_redirect, always_transparent, " + "always_refuse, always_nxdomain, noview " + ", nodefault or ipset"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_nodefault, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#ifdef USE_IPSET + } else if(strcmp(yystack.l_mark[0].str, "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_ipset, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#endif + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding local-zone"); + } + } +break; +case 419: +#line 1958 "./util/configparser.y" + { + OUTYY(("P(server_local_data:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, yystack.l_mark[0].str)) + fatal_exit("out of memory adding local-data"); + } +break; +case 420: +#line 1965 "./util/configparser.y" + { + char* ptr; + OUTYY(("P(server_local_data_ptr:%s)\n", yystack.l_mark[0].str)); + ptr = cfg_ptr_reverse(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + if(ptr) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_data, ptr)) + fatal_exit("out of memory adding local-data"); + } else { + yyerror("local-data-ptr could not be reversed"); + } + } +break; +case 421: +#line 1980 "./util/configparser.y" + { + OUTYY(("P(server_minimal_responses:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->minimal_responses = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 422: +#line 1990 "./util/configparser.y" + { + OUTYY(("P(server_rrset_roundrobin:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->rrset_roundrobin = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 423: +#line 2000 "./util/configparser.y" + { + OUTYY(("P(server_unknown_server_time_limit:%s)\n", yystack.l_mark[0].str)); + cfg_parser->cfg->unknown_server_time_limit = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 424: +#line 2007 "./util/configparser.y" + { + OUTYY(("P(server_max_udp_size:%s)\n", yystack.l_mark[0].str)); + cfg_parser->cfg->max_udp_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 425: +#line 2014 "./util/configparser.y" + { + OUTYY(("P(dns64_prefix:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dns64_prefix); + cfg_parser->cfg->dns64_prefix = yystack.l_mark[0].str; + } +break; +case 426: +#line 2021 "./util/configparser.y" + { + OUTYY(("P(server_dns64_synthall:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dns64_synthall = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 427: +#line 2030 "./util/configparser.y" + { + OUTYY(("P(dns64_ignore_aaaa:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, + yystack.l_mark[0].str)) + fatal_exit("out of memory adding dns64-ignore-aaaa"); + } +break; +case 428: +#line 2038 "./util/configparser.y" + { + char* p, *s = yystack.l_mark[0].str; + OUTYY(("P(server_define_tag:%s)\n", yystack.l_mark[0].str)); + while((p=strsep(&s, " \t\n")) != NULL) { + if(*p) { + if(!config_add_tag(cfg_parser->cfg, p)) + yyerror("could not define-tag, " + "out of memory"); + } + } + free(yystack.l_mark[0].str); + } +break; +case 429: +#line 2052 "./util/configparser.y" + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + OUTYY(("P(server_local_zone_tag:%s)\n", yystack.l_mark[-1].str)); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free(yystack.l_mark[-1].str); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->local_zone_tags, + yystack.l_mark[-1].str, bitlist, len)) { + yyerror("out of memory"); + free(yystack.l_mark[-1].str); + } + } + } +break; +case 430: +#line 2073 "./util/configparser.y" + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + OUTYY(("P(server_access_control_tag:%s)\n", yystack.l_mark[-1].str)); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free(yystack.l_mark[-1].str); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->acl_tags, + yystack.l_mark[-1].str, bitlist, len)) { + yyerror("out of memory"); + free(yystack.l_mark[-1].str); + } + } + } +break; +case 431: +#line 2094 "./util/configparser.y" + { + OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, + yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + free(yystack.l_mark[-2].str); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } + } +break; +case 432: +#line 2106 "./util/configparser.y" + { + OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, + yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + free(yystack.l_mark[-2].str); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } + } +break; +case 433: +#line 2118 "./util/configparser.y" + { + OUTYY(("P(server_local_zone_override:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, + yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + free(yystack.l_mark[-2].str); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } + } +break; +case 434: +#line 2130 "./util/configparser.y" + { + OUTYY(("P(server_access_control_view:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + } + } +break; +case 435: +#line 2139 "./util/configparser.y" + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + OUTYY(("P(response_ip_tag:%s)\n", yystack.l_mark[-1].str)); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free(yystack.l_mark[-1].str); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->respip_tags, + yystack.l_mark[-1].str, bitlist, len)) { + yyerror("out of memory"); + free(yystack.l_mark[-1].str); + } + } + } +break; +case 436: +#line 2160 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 437: +#line 2170 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ratelimit = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 438: +#line 2179 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->ip_ratelimit_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 439: +#line 2187 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->ratelimit_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 440: +#line 2195 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ip_ratelimit_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 441: +#line 2208 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ratelimit_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 442: +#line 2221 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) { + yyerror("number expected"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg-> + ratelimit_for_domain, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding " + "ratelimit-for-domain"); + } + } +break; +case 443: +#line 2236 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) { + yyerror("number expected"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg-> + ratelimit_below_domain, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding " + "ratelimit-below-domain"); + } + } +break; +case 444: +#line 2251 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_factor:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 445: +#line 2260 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_factor:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ratelimit_factor = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 446: +#line 2269 "./util/configparser.y" + { + OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); + free(yystack.l_mark[0].str); + } +break; +case 447: +#line 2275 "./util/configparser.y" + { + OUTYY(("P(server_fast_server_num:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) <= 0) + yyerror("number expected"); + else cfg_parser->cfg->fast_server_num = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 448: +#line 2284 "./util/configparser.y" + { + OUTYY(("P(server_fast_server_permil:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->fast_server_permil = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 449: +#line 2293 "./util/configparser.y" + { + OUTYY(("P(server_qname_minimisation:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 450: +#line 2303 "./util/configparser.y" + { + OUTYY(("P(server_qname_minimisation_strict:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation_strict = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 451: +#line 2313 "./util/configparser.y" + { + OUTYY(("P(server_pad_responses:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_responses = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 452: +#line 2323 "./util/configparser.y" + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_responses_block_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 453: +#line 2332 "./util/configparser.y" + { + OUTYY(("P(server_pad_queries:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_queries = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 454: +#line 2342 "./util/configparser.y" + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_queries_block_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 455: +#line 2351 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_enabled:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_enabled = (strcmp(yystack.l_mark[0].str, "yes")==0); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 456: +#line 2364 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp(yystack.l_mark[0].str, "yes")==0); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 457: +#line 2377 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_hook:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->ipsecmod_hook); + cfg_parser->cfg->ipsecmod_hook = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 458: +#line 2389 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ipsecmod_max_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 459: +#line 2403 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_whitelist:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, yystack.l_mark[0].str)) + yyerror("out of memory"); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 460: +#line 2415 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_strict:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_strict = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 461: +#line 2429 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->stubs->name) + yyerror("stub name override, there must be one name " + "for one stub-zone"); + free(cfg_parser->cfg->stubs->name); + cfg_parser->cfg->stubs->name = yystack.l_mark[0].str; + } +break; +case 462: +#line 2439 "./util/configparser.y" + { + OUTYY(("P(stub-host:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 463: +#line 2446 "./util/configparser.y" + { + OUTYY(("P(stub-addr:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 464: +#line 2453 "./util/configparser.y" + { + OUTYY(("P(stub-first:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 465: +#line 2462 "./util/configparser.y" + { + OUTYY(("P(stub-no-cache:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->no_cache=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 466: +#line 2471 "./util/configparser.y" + { + OUTYY(("P(stub-ssl-upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->ssl_upstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 467: +#line 2481 "./util/configparser.y" + { + OUTYY(("P(stub-prime:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->isprime = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 468: +#line 2491 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->forwards->name) + yyerror("forward name override, there must be one " + "name for one forward-zone"); + free(cfg_parser->cfg->forwards->name); + cfg_parser->cfg->forwards->name = yystack.l_mark[0].str; + } +break; +case 469: +#line 2501 "./util/configparser.y" + { + OUTYY(("P(forward-host:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 470: +#line 2508 "./util/configparser.y" + { + OUTYY(("P(forward-addr:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 471: +#line 2515 "./util/configparser.y" + { + OUTYY(("P(forward-first:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 472: +#line 2524 "./util/configparser.y" + { + OUTYY(("P(forward-no-cache:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->no_cache=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 473: +#line 2533 "./util/configparser.y" + { + OUTYY(("P(forward-ssl-upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->ssl_upstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 474: +#line 2543 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->auths->name) + yyerror("auth name override, there must be one name " + "for one auth-zone"); + free(cfg_parser->cfg->auths->name); + cfg_parser->cfg->auths->name = yystack.l_mark[0].str; + } +break; +case 475: +#line 2553 "./util/configparser.y" + { + OUTYY(("P(zonefile:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->auths->zonefile); + cfg_parser->cfg->auths->zonefile = yystack.l_mark[0].str; + } +break; +case 476: +#line 2560 "./util/configparser.y" + { + OUTYY(("P(master:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 477: +#line 2567 "./util/configparser.y" + { + OUTYY(("P(url:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 478: +#line 2574 "./util/configparser.y" + { + OUTYY(("P(allow-notify:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, + yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 479: +#line 2582 "./util/configparser.y" + { + OUTYY(("P(for-downstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->for_downstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 480: +#line 2592 "./util/configparser.y" + { + OUTYY(("P(for-upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->for_upstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 481: +#line 2602 "./util/configparser.y" + { + OUTYY(("P(fallback-enabled:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->fallback_enabled = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 482: +#line 2612 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->views->name) + yyerror("view name override, there must be one " + "name for one view"); + free(cfg_parser->cfg->views->name); + cfg_parser->cfg->views->name = yystack.l_mark[0].str; + } +break; +case 483: +#line 2622 "./util/configparser.y" + { + OUTYY(("P(view_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 && + strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 && + strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0 + && strcmp(yystack.l_mark[0].str, "typetransparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_transparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_refuse")!=0 + && strcmp(yystack.l_mark[0].str, "always_nxdomain")!=0 + && strcmp(yystack.l_mark[0].str, "noview")!=0 + && strcmp(yystack.l_mark[0].str, "inform")!=0 && strcmp(yystack.l_mark[0].str, "inform_deny")!=0) { + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain, noview or nodefault"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_nodefault, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#ifdef USE_IPSET + } else if(strcmp(yystack.l_mark[0].str, "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_ipset, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#endif + } else { + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->local_zones, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding local-zone"); + } + } +break; +case 484: +#line 2661 "./util/configparser.y" + { + OUTYY(("P(view_response_ip:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + validate_respip_action(yystack.l_mark[0].str); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_actions, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding per-view " + "response-ip action"); + } +break; +case 485: +#line 2671 "./util/configparser.y" + { + OUTYY(("P(view_response_ip_data:%s)\n", yystack.l_mark[-1].str)); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_data, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding response-ip-data"); + } +break; +case 486: +#line 2679 "./util/configparser.y" + { + OUTYY(("P(view_local_data:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, yystack.l_mark[0].str)) { + fatal_exit("out of memory adding local-data"); + } + } +break; +case 487: +#line 2687 "./util/configparser.y" + { + char* ptr; + OUTYY(("P(view_local_data_ptr:%s)\n", yystack.l_mark[0].str)); + ptr = cfg_ptr_reverse(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + if(ptr) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_data, ptr)) + fatal_exit("out of memory adding local-data"); + } else { + yyerror("local-data-ptr could not be reversed"); + } + } +break; +case 488: +#line 2702 "./util/configparser.y" + { + OUTYY(("P(view-first:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->views->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 489: +#line 2711 "./util/configparser.y" + { + OUTYY(("\nP(remote-control:)\n")); + } +break; +case 500: +#line 2722 "./util/configparser.y" + { + OUTYY(("P(control_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->remote_control_enable = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 501: +#line 2732 "./util/configparser.y" + { + OUTYY(("P(control_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("control port number expected"); + else cfg_parser->cfg->control_port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 502: +#line 2741 "./util/configparser.y" + { + OUTYY(("P(control_interface:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 503: +#line 2748 "./util/configparser.y" + { + OUTYY(("P(control_use_cert:%s)\n", yystack.l_mark[0].str)); + cfg_parser->cfg->control_use_cert = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 504: +#line 2755 "./util/configparser.y" + { + OUTYY(("P(rc_server_key_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->server_key_file); + cfg_parser->cfg->server_key_file = yystack.l_mark[0].str; + } +break; +case 505: +#line 2762 "./util/configparser.y" + { + OUTYY(("P(rc_server_cert_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->server_cert_file); + cfg_parser->cfg->server_cert_file = yystack.l_mark[0].str; + } +break; +case 506: +#line 2769 "./util/configparser.y" + { + OUTYY(("P(rc_control_key_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->control_key_file); + cfg_parser->cfg->control_key_file = yystack.l_mark[0].str; + } +break; +case 507: +#line 2776 "./util/configparser.y" + { + OUTYY(("P(rc_control_cert_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->control_cert_file); + cfg_parser->cfg->control_cert_file = yystack.l_mark[0].str; + } +break; +case 508: +#line 2783 "./util/configparser.y" + { + OUTYY(("\nP(dnstap:)\n")); + } +break; +case 529: +#line 2803 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 530: +#line 2812 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_socket_path:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_socket_path); + cfg_parser->cfg->dnstap_socket_path = yystack.l_mark[0].str; + } +break; +case 531: +#line 2819 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_ip:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_ip); + cfg_parser->cfg->dnstap_ip = yystack.l_mark[0].str; + } +break; +case 532: +#line 2826 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_tls = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 533: +#line 2835 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_server_name); + cfg_parser->cfg->dnstap_tls_server_name = yystack.l_mark[0].str; + } +break; +case 534: +#line 2842 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_cert_bundle); + cfg_parser->cfg->dnstap_tls_cert_bundle = yystack.l_mark[0].str; + } +break; +case 535: +#line 2849 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_client_key_file); + cfg_parser->cfg->dnstap_tls_client_key_file = yystack.l_mark[0].str; + } +break; +case 536: +#line 2856 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_client_cert_file); + cfg_parser->cfg->dnstap_tls_client_cert_file = yystack.l_mark[0].str; + } +break; +case 537: +#line 2863 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_identity:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_identity = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 538: +#line 2872 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_version:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_version = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 539: +#line 2881 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_identity:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_identity); + cfg_parser->cfg->dnstap_identity = yystack.l_mark[0].str; + } +break; +case 540: +#line 2888 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_version:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_version); + cfg_parser->cfg->dnstap_version = yystack.l_mark[0].str; + } +break; +case 541: +#line 2895 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_query_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 542: +#line 2905 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_response_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 543: +#line 2915 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_query_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 544: +#line 2925 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_response_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 545: +#line 2935 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_query_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 546: +#line 2945 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_response_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 547: +#line 2955 "./util/configparser.y" + { + OUTYY(("\nP(python:)\n")); + } +break; +case 551: +#line 2964 "./util/configparser.y" + { + OUTYY(("P(python-script:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 552: +#line 2970 "./util/configparser.y" + { + OUTYY(("P(disable_dnssec_lame_check:%s)\n", yystack.l_mark[0].str)); + if (strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->disable_dnssec_lame_check = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 553: +#line 2980 "./util/configparser.y" + { + OUTYY(("P(server_log_identity:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->log_identity); + cfg_parser->cfg->log_identity = yystack.l_mark[0].str; + } +break; +case 554: +#line 2987 "./util/configparser.y" + { + OUTYY(("P(server_response_ip:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + validate_respip_action(yystack.l_mark[0].str); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding response-ip"); + } +break; +case 555: +#line 2996 "./util/configparser.y" + { + OUTYY(("P(server_response_ip_data:%s)\n", yystack.l_mark[-1].str)); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding response-ip-data"); + } +break; +case 556: +#line 3004 "./util/configparser.y" + { + OUTYY(("\nP(dnscrypt:)\n")); + } +break; +case 569: +#line 3020 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnscrypt = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 570: +#line 3030 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->dnscrypt_port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 571: +#line 3039 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnscrypt_provider); + cfg_parser->cfg->dnscrypt_provider = yystack.l_mark[0].str; + } +break; +case 572: +#line 3046 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", yystack.l_mark[0].str)); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, yystack.l_mark[0].str)) + log_warn("dnscrypt-provider-cert %s is a duplicate", yystack.l_mark[0].str); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, yystack.l_mark[0].str)) + fatal_exit("out of memory adding dnscrypt-provider-cert"); + } +break; +case 573: +#line 3055 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, yystack.l_mark[0].str)) + fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); + } +break; +case 574: +#line 3062 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", yystack.l_mark[0].str)); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, yystack.l_mark[0].str)) + log_warn("dnscrypt-secret-key: %s is a duplicate", yystack.l_mark[0].str); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, yystack.l_mark[0].str)) + fatal_exit("out of memory adding dnscrypt-secret-key"); + } +break; +case 575: +#line 3071 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 576: +#line 3079 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 577: +#line 3092 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->dnscrypt_nonce_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 578: +#line 3100 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 579: +#line 3113 "./util/configparser.y" + { + OUTYY(("\nP(cachedb:)\n")); + } +break; +case 587: +#line 3123 "./util/configparser.y" + { + #ifdef USE_CACHEDB + OUTYY(("P(backend:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->cachedb_backend); + cfg_parser->cfg->cachedb_backend = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 588: +#line 3135 "./util/configparser.y" + { + #ifdef USE_CACHEDB + OUTYY(("P(secret-seed:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->cachedb_secret); + cfg_parser->cfg->cachedb_secret = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 589: +#line 3147 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_host:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->redis_server_host); + cfg_parser->cfg->redis_server_host = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 590: +#line 3159 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + int port; + OUTYY(("P(redis_server_port:%s)\n", yystack.l_mark[0].str)); + port = atoi(yystack.l_mark[0].str); + if(port == 0 || port < 0 || port > 65535) + yyerror("valid redis server port number expected"); + else cfg_parser->cfg->redis_server_port = port; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 591: +#line 3174 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("redis timeout value expected"); + else cfg_parser->cfg->redis_timeout = atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 592: +#line 3187 "./util/configparser.y" + { + OUTYY(("P(server_tcp_connection_limit:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if (atoi(yystack.l_mark[0].str) < 0) + yyerror("positive number expected"); + else { + if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding tcp connection limit"); + } + } +break; +case 593: +#line 3198 "./util/configparser.y" + { + OUTYY(("\nP(ipset:)\n")); + } +break; +case 598: +#line 3207 "./util/configparser.y" + { + #ifdef USE_IPSET + OUTYY(("P(name-v4:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->ipset_name_v4) + yyerror("ipset name v4 override, there must be one " + "name for ip v4"); + free(cfg_parser->cfg->ipset_name_v4); + cfg_parser->cfg->ipset_name_v4 = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 599: +#line 3222 "./util/configparser.y" + { + #ifdef USE_IPSET + OUTYY(("P(name-v6:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->ipset_name_v6) + yyerror("ipset name v6 override, there must be one " + "name for ip v6"); + free(cfg_parser->cfg->ipset_name_v6); + cfg_parser->cfg->ipset_name_v6 = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +#line 5180 "util/configparser.c" + } + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; + yym = yylhs[yyn]; + if (yystate == 0 && yym == 0) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state 0 to\ + state %d\n", YYPREFIX, YYFINAL); +#endif + yystate = YYFINAL; + *++yystack.s_mark = YYFINAL; + *++yystack.l_mark = yyval; + if (yychar < 0) + { + if ((yychar = YYLEX) < 0) yychar = YYEOF; +#if YYDEBUG + if (yydebug) + { + yys = yyname[YYTRANSLATE(yychar)]; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, YYFINAL, yychar, yys); + } +#endif + } + if (yychar == YYEOF) goto yyaccept; + goto yyloop; + } + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + yystate = yytable[yyn]; + else + yystate = yydgoto[yym]; +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state %d \ +to state %d\n", YYPREFIX, *yystack.s_mark, yystate); +#endif + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) + { + goto yyoverflow; + } + *++yystack.s_mark = (YYINT) yystate; + *++yystack.l_mark = yyval; + goto yyloop; + +yyoverflow: + YYERROR_CALL("yacc stack overflow"); + +yyabort: + yyfreestack(&yystack); + return (1); + +yyaccept: + yyfreestack(&yystack); + return (0); +} diff --git a/util/configparser.h b/util/configparser.h index f5958de4b..0b383b6d1 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,643 +1,298 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ - -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 +#define SPACE 257 +#define LETTER 258 +#define NEWLINE 259 +#define COMMENT 260 +#define COLON 261 +#define ANY 262 +#define ZONESTR 263 +#define STRING_ARG 264 +#define VAR_SERVER 265 +#define VAR_VERBOSITY 266 +#define VAR_NUM_THREADS 267 +#define VAR_PORT 268 +#define VAR_OUTGOING_RANGE 269 +#define VAR_INTERFACE 270 +#define VAR_PREFER_IP4 271 +#define VAR_DO_IP4 272 +#define VAR_DO_IP6 273 +#define VAR_PREFER_IP6 274 +#define VAR_DO_UDP 275 +#define VAR_DO_TCP 276 +#define VAR_TCP_MSS 277 +#define VAR_OUTGOING_TCP_MSS 278 +#define VAR_TCP_IDLE_TIMEOUT 279 +#define VAR_EDNS_TCP_KEEPALIVE 280 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 281 +#define VAR_CHROOT 282 +#define VAR_USERNAME 283 +#define VAR_DIRECTORY 284 +#define VAR_LOGFILE 285 +#define VAR_PIDFILE 286 +#define VAR_MSG_CACHE_SIZE 287 +#define VAR_MSG_CACHE_SLABS 288 +#define VAR_NUM_QUERIES_PER_THREAD 289 +#define VAR_RRSET_CACHE_SIZE 290 +#define VAR_RRSET_CACHE_SLABS 291 +#define VAR_OUTGOING_NUM_TCP 292 +#define VAR_INFRA_HOST_TTL 293 +#define VAR_INFRA_LAME_TTL 294 +#define VAR_INFRA_CACHE_SLABS 295 +#define VAR_INFRA_CACHE_NUMHOSTS 296 +#define VAR_INFRA_CACHE_LAME_SIZE 297 +#define VAR_NAME 298 +#define VAR_STUB_ZONE 299 +#define VAR_STUB_HOST 300 +#define VAR_STUB_ADDR 301 +#define VAR_TARGET_FETCH_POLICY 302 +#define VAR_HARDEN_SHORT_BUFSIZE 303 +#define VAR_HARDEN_LARGE_QUERIES 304 +#define VAR_FORWARD_ZONE 305 +#define VAR_FORWARD_HOST 306 +#define VAR_FORWARD_ADDR 307 +#define VAR_DO_NOT_QUERY_ADDRESS 308 +#define VAR_HIDE_IDENTITY 309 +#define VAR_HIDE_VERSION 310 +#define VAR_IDENTITY 311 +#define VAR_VERSION 312 +#define VAR_HARDEN_GLUE 313 +#define VAR_MODULE_CONF 314 +#define VAR_TRUST_ANCHOR_FILE 315 +#define VAR_TRUST_ANCHOR 316 +#define VAR_VAL_OVERRIDE_DATE 317 +#define VAR_BOGUS_TTL 318 +#define VAR_VAL_CLEAN_ADDITIONAL 319 +#define VAR_VAL_PERMISSIVE_MODE 320 +#define VAR_INCOMING_NUM_TCP 321 +#define VAR_MSG_BUFFER_SIZE 322 +#define VAR_KEY_CACHE_SIZE 323 +#define VAR_KEY_CACHE_SLABS 324 +#define VAR_TRUSTED_KEYS_FILE 325 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 326 +#define VAR_USE_SYSLOG 327 +#define VAR_OUTGOING_INTERFACE 328 +#define VAR_ROOT_HINTS 329 +#define VAR_DO_NOT_QUERY_LOCALHOST 330 +#define VAR_CACHE_MAX_TTL 331 +#define VAR_HARDEN_DNSSEC_STRIPPED 332 +#define VAR_ACCESS_CONTROL 333 +#define VAR_LOCAL_ZONE 334 +#define VAR_LOCAL_DATA 335 +#define VAR_INTERFACE_AUTOMATIC 336 +#define VAR_STATISTICS_INTERVAL 337 +#define VAR_DO_DAEMONIZE 338 +#define VAR_USE_CAPS_FOR_ID 339 +#define VAR_STATISTICS_CUMULATIVE 340 +#define VAR_OUTGOING_PORT_PERMIT 341 +#define VAR_OUTGOING_PORT_AVOID 342 +#define VAR_DLV_ANCHOR_FILE 343 +#define VAR_DLV_ANCHOR 344 +#define VAR_NEG_CACHE_SIZE 345 +#define VAR_HARDEN_REFERRAL_PATH 346 +#define VAR_PRIVATE_ADDRESS 347 +#define VAR_PRIVATE_DOMAIN 348 +#define VAR_REMOTE_CONTROL 349 +#define VAR_CONTROL_ENABLE 350 +#define VAR_CONTROL_INTERFACE 351 +#define VAR_CONTROL_PORT 352 +#define VAR_SERVER_KEY_FILE 353 +#define VAR_SERVER_CERT_FILE 354 +#define VAR_CONTROL_KEY_FILE 355 +#define VAR_CONTROL_CERT_FILE 356 +#define VAR_CONTROL_USE_CERT 357 +#define VAR_EXTENDED_STATISTICS 358 +#define VAR_LOCAL_DATA_PTR 359 +#define VAR_JOSTLE_TIMEOUT 360 +#define VAR_STUB_PRIME 361 +#define VAR_UNWANTED_REPLY_THRESHOLD 362 +#define VAR_LOG_TIME_ASCII 363 +#define VAR_DOMAIN_INSECURE 364 +#define VAR_PYTHON 365 +#define VAR_PYTHON_SCRIPT 366 +#define VAR_VAL_SIG_SKEW_MIN 367 +#define VAR_VAL_SIG_SKEW_MAX 368 +#define VAR_CACHE_MIN_TTL 369 +#define VAR_VAL_LOG_LEVEL 370 +#define VAR_AUTO_TRUST_ANCHOR_FILE 371 +#define VAR_KEEP_MISSING 372 +#define VAR_ADD_HOLDDOWN 373 +#define VAR_DEL_HOLDDOWN 374 +#define VAR_SO_RCVBUF 375 +#define VAR_EDNS_BUFFER_SIZE 376 +#define VAR_PREFETCH 377 +#define VAR_PREFETCH_KEY 378 +#define VAR_SO_SNDBUF 379 +#define VAR_SO_REUSEPORT 380 +#define VAR_HARDEN_BELOW_NXDOMAIN 381 +#define VAR_IGNORE_CD_FLAG 382 +#define VAR_LOG_QUERIES 383 +#define VAR_LOG_REPLIES 384 +#define VAR_LOG_LOCAL_ACTIONS 385 +#define VAR_TCP_UPSTREAM 386 +#define VAR_SSL_UPSTREAM 387 +#define VAR_SSL_SERVICE_KEY 388 +#define VAR_SSL_SERVICE_PEM 389 +#define VAR_SSL_PORT 390 +#define VAR_FORWARD_FIRST 391 +#define VAR_STUB_SSL_UPSTREAM 392 +#define VAR_FORWARD_SSL_UPSTREAM 393 +#define VAR_TLS_CERT_BUNDLE 394 +#define VAR_STUB_FIRST 395 +#define VAR_MINIMAL_RESPONSES 396 +#define VAR_RRSET_ROUNDROBIN 397 +#define VAR_MAX_UDP_SIZE 398 +#define VAR_DELAY_CLOSE 399 +#define VAR_UNBLOCK_LAN_ZONES 400 +#define VAR_INSECURE_LAN_ZONES 401 +#define VAR_INFRA_CACHE_MIN_RTT 402 +#define VAR_DNS64_PREFIX 403 +#define VAR_DNS64_SYNTHALL 404 +#define VAR_DNS64_IGNORE_AAAA 405 +#define VAR_DNSTAP 406 +#define VAR_DNSTAP_ENABLE 407 +#define VAR_DNSTAP_SOCKET_PATH 408 +#define VAR_DNSTAP_IP 409 +#define VAR_DNSTAP_TLS 410 +#define VAR_DNSTAP_TLS_SERVER_NAME 411 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 412 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 413 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 414 +#define VAR_DNSTAP_SEND_IDENTITY 415 +#define VAR_DNSTAP_SEND_VERSION 416 +#define VAR_DNSTAP_IDENTITY 417 +#define VAR_DNSTAP_VERSION 418 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 419 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 420 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 424 +#define VAR_RESPONSE_IP_TAG 425 +#define VAR_RESPONSE_IP 426 +#define VAR_RESPONSE_IP_DATA 427 +#define VAR_HARDEN_ALGO_DOWNGRADE 428 +#define VAR_IP_TRANSPARENT 429 +#define VAR_IP_DSCP 430 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 431 +#define VAR_IP_RATELIMIT 432 +#define VAR_IP_RATELIMIT_SLABS 433 +#define VAR_IP_RATELIMIT_SIZE 434 +#define VAR_RATELIMIT 435 +#define VAR_RATELIMIT_SLABS 436 +#define VAR_RATELIMIT_SIZE 437 +#define VAR_RATELIMIT_FOR_DOMAIN 438 +#define VAR_RATELIMIT_BELOW_DOMAIN 439 +#define VAR_IP_RATELIMIT_FACTOR 440 +#define VAR_RATELIMIT_FACTOR 441 +#define VAR_SEND_CLIENT_SUBNET 442 +#define VAR_CLIENT_SUBNET_ZONE 443 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444 +#define VAR_CLIENT_SUBNET_OPCODE 445 +#define VAR_MAX_CLIENT_SUBNET_IPV4 446 +#define VAR_MAX_CLIENT_SUBNET_IPV6 447 +#define VAR_MIN_CLIENT_SUBNET_IPV4 448 +#define VAR_MIN_CLIENT_SUBNET_IPV6 449 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 450 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 451 +#define VAR_CAPS_WHITELIST 452 +#define VAR_CACHE_MAX_NEGATIVE_TTL 453 +#define VAR_PERMIT_SMALL_HOLDDOWN 454 +#define VAR_QNAME_MINIMISATION 455 +#define VAR_QNAME_MINIMISATION_STRICT 456 +#define VAR_IP_FREEBIND 457 +#define VAR_DEFINE_TAG 458 +#define VAR_LOCAL_ZONE_TAG 459 +#define VAR_ACCESS_CONTROL_TAG 460 +#define VAR_LOCAL_ZONE_OVERRIDE 461 +#define VAR_ACCESS_CONTROL_TAG_ACTION 462 +#define VAR_ACCESS_CONTROL_TAG_DATA 463 +#define VAR_VIEW 464 +#define VAR_ACCESS_CONTROL_VIEW 465 +#define VAR_VIEW_FIRST 466 +#define VAR_SERVE_EXPIRED 467 +#define VAR_SERVE_EXPIRED_TTL 468 +#define VAR_SERVE_EXPIRED_TTL_RESET 469 +#define VAR_SERVE_EXPIRED_REPLY_TTL 470 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471 +#define VAR_FAKE_DSA 472 +#define VAR_FAKE_SHA1 473 +#define VAR_LOG_IDENTITY 474 +#define VAR_HIDE_TRUSTANCHOR 475 +#define VAR_TRUST_ANCHOR_SIGNALING 476 +#define VAR_AGGRESSIVE_NSEC 477 +#define VAR_USE_SYSTEMD 478 +#define VAR_SHM_ENABLE 479 +#define VAR_SHM_KEY 480 +#define VAR_ROOT_KEY_SENTINEL 481 +#define VAR_DNSCRYPT 482 +#define VAR_DNSCRYPT_ENABLE 483 +#define VAR_DNSCRYPT_PORT 484 +#define VAR_DNSCRYPT_PROVIDER 485 +#define VAR_DNSCRYPT_SECRET_KEY 486 +#define VAR_DNSCRYPT_PROVIDER_CERT 487 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492 +#define VAR_PAD_RESPONSES 493 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 494 +#define VAR_PAD_QUERIES 495 +#define VAR_PAD_QUERIES_BLOCK_SIZE 496 +#define VAR_IPSECMOD_ENABLED 497 +#define VAR_IPSECMOD_HOOK 498 +#define VAR_IPSECMOD_IGNORE_BOGUS 499 +#define VAR_IPSECMOD_MAX_TTL 500 +#define VAR_IPSECMOD_WHITELIST 501 +#define VAR_IPSECMOD_STRICT 502 +#define VAR_CACHEDB 503 +#define VAR_CACHEDB_BACKEND 504 +#define VAR_CACHEDB_SECRETSEED 505 +#define VAR_CACHEDB_REDISHOST 506 +#define VAR_CACHEDB_REDISPORT 507 +#define VAR_CACHEDB_REDISTIMEOUT 508 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 509 +#define VAR_FOR_UPSTREAM 510 +#define VAR_AUTH_ZONE 511 +#define VAR_ZONEFILE 512 +#define VAR_MASTER 513 +#define VAR_URL 514 +#define VAR_FOR_DOWNSTREAM 515 +#define VAR_FALLBACK_ENABLED 516 +#define VAR_TLS_ADDITIONAL_PORT 517 +#define VAR_LOW_RTT 518 +#define VAR_LOW_RTT_PERMIL 519 +#define VAR_FAST_SERVER_PERMIL 520 +#define VAR_FAST_SERVER_NUM 521 +#define VAR_ALLOW_NOTIFY 522 +#define VAR_TLS_WIN_CERT 523 +#define VAR_TCP_CONNECTION_LIMIT 524 +#define VAR_FORWARD_NO_CACHE 525 +#define VAR_STUB_NO_CACHE 526 +#define VAR_LOG_SERVFAIL 527 +#define VAR_DENY_ANY 528 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 529 +#define VAR_LOG_TAG_QUERYREPLY 530 +#define VAR_STREAM_WAIT_SIZE 531 +#define VAR_TLS_CIPHERS 532 +#define VAR_TLS_CIPHERSUITES 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#ifdef YYSTYPE +#undef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 #endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506, - VAR_FOR_UPSTREAM = 507, - VAR_AUTH_ZONE = 508, - VAR_ZONEFILE = 509, - VAR_MASTER = 510, - VAR_URL = 511, - VAR_FOR_DOWNSTREAM = 512, - VAR_FALLBACK_ENABLED = 513, - VAR_TLS_ADDITIONAL_PORT = 514, - VAR_LOW_RTT = 515, - VAR_LOW_RTT_PERMIL = 516, - VAR_FAST_SERVER_PERMIL = 517, - VAR_FAST_SERVER_NUM = 518, - VAR_ALLOW_NOTIFY = 519, - VAR_TLS_WIN_CERT = 520, - VAR_TCP_CONNECTION_LIMIT = 521, - VAR_FORWARD_NO_CACHE = 522, - VAR_STUB_NO_CACHE = 523, - VAR_LOG_SERVFAIL = 524, - VAR_DENY_ANY = 525, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 526, - VAR_LOG_TAG_QUERYREPLY = 527, - VAR_STREAM_WAIT_SIZE = 528, - VAR_TLS_CIPHERS = 529, - VAR_TLS_CIPHERSUITES = 530, - VAR_IPSET = 531, - VAR_IPSET_NAME_V4 = 532, - VAR_IPSET_NAME_V6 = 533, - VAR_TLS_SESSION_TICKET_KEYS = 534, - VAR_RPZ = 535, - VAR_TAGS = 536, - VAR_RPZ_ACTION_OVERRIDE = 537, - VAR_RPZ_CNAME_OVERRIDE = 538, - VAR_RPZ_LOG = 539, - VAR_RPZ_LOG_NAME = 540 - }; -#endif -/* Tokens. */ -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506 -#define VAR_FOR_UPSTREAM 507 -#define VAR_AUTH_ZONE 508 -#define VAR_ZONEFILE 509 -#define VAR_MASTER 510 -#define VAR_URL 511 -#define VAR_FOR_DOWNSTREAM 512 -#define VAR_FALLBACK_ENABLED 513 -#define VAR_TLS_ADDITIONAL_PORT 514 -#define VAR_LOW_RTT 515 -#define VAR_LOW_RTT_PERMIL 516 -#define VAR_FAST_SERVER_PERMIL 517 -#define VAR_FAST_SERVER_NUM 518 -#define VAR_ALLOW_NOTIFY 519 -#define VAR_TLS_WIN_CERT 520 -#define VAR_TCP_CONNECTION_LIMIT 521 -#define VAR_FORWARD_NO_CACHE 522 -#define VAR_STUB_NO_CACHE 523 -#define VAR_LOG_SERVFAIL 524 -#define VAR_DENY_ANY 525 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526 -#define VAR_LOG_TAG_QUERYREPLY 527 -#define VAR_STREAM_WAIT_SIZE 528 -#define VAR_TLS_CIPHERS 529 -#define VAR_TLS_CIPHERSUITES 530 -#define VAR_IPSET 531 -#define VAR_IPSET_NAME_V4 532 -#define VAR_IPSET_NAME_V6 533 -#define VAR_TLS_SESSION_TICKET_KEYS 534 -#define VAR_RPZ 535 -#define VAR_TAGS 536 -#define VAR_RPZ_ACTION_OVERRIDE 537 -#define VAR_RPZ_CNAME_OVERRIDE 538 -#define VAR_RPZ_LOG 539 -#define VAR_RPZ_LOG_NAME 540 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - +#ifndef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 +typedef union { char* str; - -#line 631 "util/configparser.h" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - +} YYSTYPE; +#endif /* !YYSTYPE_IS_DECLARED */ extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index f7be1019c..bbefeb431 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -158,6 +158,8 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS %token VAR_DNSCRYPT_NONCE_CACHE_SIZE %token VAR_DNSCRYPT_NONCE_CACHE_SLABS +%token VAR_PAD_RESPONSES VAR_PAD_RESPONSES_BLOCK_SIZE +%token VAR_PAD_QUERIES VAR_PAD_QUERIES_BLOCK_SIZE %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED @@ -2307,6 +2309,44 @@ server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG free($2); } ; +server_pad_responses: VAR_PAD_RESPONSES STRING_ARG + { + OUTYY(("P(server_pad_responses:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_responses = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_responses_block_size = atoi($2); + free($2); + } + ; +server_pad_queries: VAR_PAD_QUERIES STRING_ARG + { + OUTYY(("P(server_pad_queries:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_queries = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_queries_block_size = atoi($2); + free($2); + } + ; server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG { #ifdef USE_IPSECMOD diff --git a/util/data/msgencode.c b/util/data/msgencode.c index be69f628a..debb9eed1 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -798,14 +798,14 @@ calc_edns_field_size(struct edns_data* edns) return 1 + 2 + 2 + 4 + 2 + rdatalen; } -void -attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) +static void +attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, + uint16_t max_msg_sz) { size_t len; size_t rdatapos; struct edns_option* opt; - if(!edns || !edns->edns_present) - return; + struct edns_option* padding_option = NULL; /* inc additional count */ sldns_buffer_write_u16_at(pkt, 10, sldns_buffer_read_u16_at(pkt, 10) + 1); @@ -823,17 +823,53 @@ attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) sldns_buffer_write_u16(pkt, 0); /* rdatalen */ /* write rdata */ for(opt=edns->opt_list; opt; opt=opt->next) { + if (opt->opt_code == LDNS_EDNS_PADDING) { + padding_option = opt; + continue; + } sldns_buffer_write_u16(pkt, opt->opt_code); sldns_buffer_write_u16(pkt, opt->opt_len); if(opt->opt_len != 0) sldns_buffer_write(pkt, opt->opt_data, opt->opt_len); } + if (padding_option && edns->padding_block_size ) { + size_t pad_pos = sldns_buffer_position(pkt); + size_t msg_sz = ((pad_pos + 3) / edns->padding_block_size + 1) + * edns->padding_block_size; + size_t pad_sz; + + if (msg_sz > max_msg_sz) + msg_sz = max_msg_sz; + + /* By use of calc_edns_field_size, calling functions should + * have made sure that there is enough space for at least a + * zero sized padding option, but it cannot harm to leave it + * out if there isn't. + */ + log_assert(pad_pos + 4 <= msg_sz); + + pad_sz = msg_sz - pad_pos - 4; + sldns_buffer_write_u16(pkt, LDNS_EDNS_PADDING); + sldns_buffer_write_u16(pkt, pad_sz); + if (pad_sz) { + memset(sldns_buffer_current(pkt), 0, pad_sz); + sldns_buffer_skip(pkt, pad_sz); + } + } if(edns->opt_list) sldns_buffer_write_u16_at(pkt, rdatapos, sldns_buffer_position(pkt)-rdatapos-2); sldns_buffer_flip(pkt); } +void +attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) +{ + if(!edns || !edns->edns_present) + return; + attach_edns_record_max_msg_sz(pkt, edns, edns->udp_size); +} + int reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, uint16_t id, uint16_t qflags, sldns_buffer* pkt, time_t timenow, @@ -882,7 +918,7 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, } if(attach_edns && sldns_buffer_capacity(pkt) >= sldns_buffer_limit(pkt)+attach_edns) - attach_edns_record(pkt, edns); + attach_edns_record_max_msg_sz(pkt, edns, udpsize+attach_edns); return 1; } diff --git a/util/data/msgparse.c b/util/data/msgparse.c index fb3123703..d553472bf 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -1016,6 +1016,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, edns->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]); edns->udp_size = ntohs(found->rrset_class); edns->opt_list = NULL; + edns->padding_block_size = 0; /* take the options */ rdata_len = found->rr_first->size-2; @@ -1089,6 +1090,7 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, edns->edns_version = sldns_buffer_read_u8(pkt); edns->bits = sldns_buffer_read_u16(pkt); edns->opt_list = NULL; + edns->padding_block_size = 0; /* take the options */ rdata_len = sldns_buffer_read_u16(pkt); diff --git a/util/data/msgparse.h b/util/data/msgparse.h index fd04f9f6f..533130c79 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -225,6 +225,8 @@ struct edns_data { uint16_t udp_size; /** rdata element list, or NULL if none */ struct edns_option* opt_list; + /** block size to pad */ + uint16_t padding_block_size; }; /** diff --git a/util/edns.c b/util/edns.c index d19952df0..8376fb1c5 100644 --- a/util/edns.c +++ b/util/edns.c @@ -79,5 +79,15 @@ int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, !edns_keepalive(edns_out, edns_in, c, region)) return 0; + if(!cfg->pad_responses || c->type != comm_tcp || !c->ssl + || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING)) + ; /* pass */ + + else if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_PADDING + , 0, NULL, region)) + return 0; + else + edns_out->padding_block_size = cfg->pad_responses_block_size; + return 1; } diff --git a/validator/autotrust.c b/validator/autotrust.c index fd9fb3cf1..7ce07e0d8 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -2365,6 +2365,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; From 2c8a91c2f9de8a4bfde7ef0567c317ff1301b382 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 14 Apr 2020 08:52:51 +0200 Subject: [PATCH 02/45] pad-queries default yes --- doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 2 +- util/config_file.c | 2 +- util/data/msgencode.c | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index ff68db014..ac282950f 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -771,7 +771,7 @@ server: # tls-win-cert: no # Pad queries over TLS upstreams - # pad-queries: no + # pad-queries: yes # Padded queries will be padded to the closest multiple of this size. # pad-queries-block-size: 128 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 12c2b20f6..107ccb938 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -560,7 +560,7 @@ Default is 468. .B pad\-queries: \fI If enabled, all queries sent over TLS upstreams will be padded to the closest multiple of the size specified in \fBpad\-queries\-block\-size\fR. -Default is no. +Default is yes. .TP .B pad\-queries\-block\-size: \fI The block size with which to pad queries sent over TLS upstreams. diff --git a/util/config_file.c b/util/config_file.c index 7f7f2dc22..1071f9a7b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -324,7 +324,7 @@ config_create(void) cfg->dnscrypt_nonce_cache_slabs = 4; cfg->pad_responses = 1; cfg->pad_responses_block_size = 468; /* from RFC8467 */ - cfg->pad_queries = 0; + cfg->pad_queries = 1; cfg->pad_queries_block_size = 128; /* from RFC8467 */ #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; diff --git a/util/data/msgencode.c b/util/data/msgencode.c index debb9eed1..49e48954b 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -843,8 +843,7 @@ attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, /* By use of calc_edns_field_size, calling functions should * have made sure that there is enough space for at least a - * zero sized padding option, but it cannot harm to leave it - * out if there isn't. + * zero sized padding option. */ log_assert(pad_pos + 4 <= msg_sz); From b5b79e3a36d8983a6ce37fe08a01fb005215d066 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 15 Jul 2020 15:15:45 +0000 Subject: [PATCH 03/45] Add feature to serve original TTLs rather than decrementing ones --- cachedb/cachedb.c | 1 + doc/unbound.conf.5.in | 12 + services/cache/rrset.c | 2 + util/config_file.c | 4 + util/config_file.h | 2 + util/configlexer.c | 4057 +++++++++++++++++++------------------- util/configlexer.lex | 1 + util/configparser.c | 3187 +++++++++++++++--------------- util/configparser.h | 305 ++- util/configparser.y | 14 +- util/data/msgencode.c | 8 +- util/data/msgparse.h | 2 + util/data/msgreply.c | 3 + util/data/packed_rrset.c | 8 +- util/data/packed_rrset.h | 3 + 15 files changed, 3838 insertions(+), 3771 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index eed4d5fd9..6a2b735aa 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -465,6 +465,7 @@ packed_rrset_ttl_subtract(struct packed_rrset_data* data, time_t subtract) data->rr_ttl[i] -= subtract; else data->rr_ttl[i] = 0; } + data->ttl_add = 0; } /* Adjust the TTL of a DNS message and its RRs by 'adjust'. If 'adjust' is diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index de5a333bd..5e826bbf6 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1124,6 +1124,18 @@ responding with expired data. A recommended value per draft-ietf-dnsop-serve-stale-10 is 1800. Setting this to 0 will disable this behavior. Default is 0. .TP +.B serve\-original\-ttl: \fI +If enabled, unbound will always return the original TTL as received from +the upstream authoritative name server rather than the decrementing TTL as +stored in the cache. This feature may be useful if unbound serves as a +front-end to a hidden authoritative name server. Enabling this feature does +not impact cache expiry, it only changes the TTL unbound embeds in responses to +queries. Note that the returned TTL is still subject to the +configured maximum TTL as set using \fBcache\-max\-ttl\fR (defaults to +86400 seconds). If you wish to return higher original TTL values, you may +need to explicitly adjust the setting for \fBcache\-max\-ttl\fR. +Default is "no". +.TP .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> List of keysize and iteration count values, separated by spaces, surrounded by quotes. Default is "1024 150 2048 500 4096 2500". This determines the diff --git a/services/cache/rrset.c b/services/cache/rrset.c index 8c0251bcb..4e3d08bda 100644 --- a/services/cache/rrset.c +++ b/services/cache/rrset.c @@ -45,6 +45,7 @@ #include "util/config_file.h" #include "util/data/packed_rrset.h" #include "util/data/msgreply.h" +#include "util/data/msgparse.h" #include "util/regional.h" #include "util/alloc.h" #include "util/net_help.h" @@ -396,6 +397,7 @@ rrset_update_sec_status(struct rrset_cache* r, cachedata->ttl = updata->ttl + now; for(i=0; icount+cachedata->rrsig_count; i++) cachedata->rr_ttl[i] = updata->rr_ttl[i]+now; + cachedata->ttl_add = now; } } lock_rw_unlock(&e->lock); diff --git a/util/config_file.c b/util/config_file.c index b1420d508..5e9e2fda2 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -250,6 +250,7 @@ config_create(void) cfg->serve_expired_ttl_reset = 0; cfg->serve_expired_reply_ttl = 30; cfg->serve_expired_client_timeout = 0; + cfg->serve_original_ttl = 0; cfg->add_holddown = 30*24*3600; cfg->del_holddown = 30*24*3600; cfg->keep_missing = 366*24*3600; /* one year plus a little leeway */ @@ -604,6 +605,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else if(strcmp(opt, "serve-expired-reply-ttl:") == 0) { IS_NUMBER_OR_ZERO; cfg->serve_expired_reply_ttl = atoi(val); SERVE_EXPIRED_REPLY_TTL=(time_t)cfg->serve_expired_reply_ttl;} else S_NUMBER_OR_ZERO("serve-expired-client-timeout:", serve_expired_client_timeout) + else S_YNO("serve-original-ttl:", serve_original_ttl) else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations) else S_UNSIGNED_OR_ZERO("add-holddown:", add_holddown) else S_UNSIGNED_OR_ZERO("del-holddown:", del_holddown) @@ -1008,6 +1010,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "serve-expired-ttl-reset", serve_expired_ttl_reset) else O_DEC(opt, "serve-expired-reply-ttl", serve_expired_reply_ttl) else O_DEC(opt, "serve-expired-client-timeout", serve_expired_client_timeout) + else O_YNO(opt, "serve-original-ttl", serve_original_ttl) else O_STR(opt, "val-nsec3-keysize-iterations",val_nsec3_key_iterations) else O_UNS(opt, "add-holddown", add_holddown) else O_UNS(opt, "del-holddown", del_holddown) @@ -2030,6 +2033,7 @@ config_apply(struct config_file* config) SERVE_EXPIRED = config->serve_expired; SERVE_EXPIRED_TTL = (time_t)config->serve_expired_ttl; SERVE_EXPIRED_REPLY_TTL = (time_t)config->serve_expired_reply_ttl; + SERVE_ORIGINAL_TTL = config->serve_original_ttl; MAX_NEG_TTL = (time_t)config->max_negative_ttl; RTT_MIN_TIMEOUT = config->infra_cache_min_rtt; EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size; diff --git a/util/config_file.h b/util/config_file.h index fa7e5c592..c7a028fba 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -373,6 +373,8 @@ struct config_file { /** serve expired entries only after trying to update the entries and this * timeout (in milliseconds) is reached */ int serve_expired_client_timeout; + /** serve original TTLs rather than decrementing ones */ + int serve_original_ttl; /** nsec3 maximum iterations per key size, string */ char* val_nsec3_key_iterations; /** autotrust add holddown time, in seconds */ diff --git a/util/configlexer.c b/util/configlexer.c index a4ac74066..b4013146d 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 314 -#define YY_END_OF_BUFFER 315 +#define YY_NUM_RULES 315 +#define YY_END_OF_BUFFER 316 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,347 +363,349 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3083] = +static const flex_int16_t yy_accept[3096] = { 0, - 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, - 1, 1, 315, 312, 1, 294, 294, 313, 2, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 296, 297, 297, 298, 313, 300, 301, 301, - 302, 313, 307, 304, 305, 305, 306, 313, 308, 309, - 309, 310, 313, 311, 295, 2, 299, 313, 311, 312, - 0, 1, 2, 2, 2, 2, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 1, 1, 297, 297, 301, 301, 305, 305, 309, 309, + 1, 1, 316, 313, 1, 295, 295, 314, 2, 314, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 297, 298, 298, 299, 314, 301, 302, 302, + 303, 314, 308, 305, 306, 306, 307, 314, 309, 310, + 310, 311, 314, 312, 296, 2, 300, 314, 312, 313, + 0, 1, 2, 2, 2, 2, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 296, 0, 300, 0, 307, 0, 304, 308, 0, - 311, 0, 2, 2, 311, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 297, 0, 301, 0, 308, 0, 305, 309, 0, + 312, 0, 2, 2, 312, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 311, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 312, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 115, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 123, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 115, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 123, + 313, 313, 313, 313, 313, 313, 313, 312, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 99, 312, 312, 312, 312, 312, - 312, 8, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 116, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 99, 313, 313, 313, 313, 313, + 313, 8, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 116, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 128, 312, 311, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 289, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 128, 313, 312, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 290, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 311, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 57, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 227, 312, 14, 15, 312, 19, 18, 312, 312, 211, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 312, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 57, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 228, 313, 14, 15, 313, 19, 18, 313, 313, 212, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 122, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 209, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 3, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 122, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 210, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 3, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 283, 312, 312, 282, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 303, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 312, 313, + 313, 313, 313, 313, 313, 313, 284, 313, 313, 283, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 304, 313, 313, 313, - 312, 312, 312, 56, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 60, 312, 257, 312, 312, 312, 312, 312, 312, 312, - 312, 290, 291, 312, 312, 312, 312, 312, 61, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 119, 312, 312, 312, 312, - 312, 312, 312, 312, 198, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 21, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 56, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 60, 313, 258, 313, 313, 313, 313, 313, 313, + 313, 313, 291, 292, 313, 313, 313, 313, 313, 61, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 119, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 199, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 21, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 147, 312, 312, 303, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 97, 312, - 312, 312, 312, 312, 312, 312, 265, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 170, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 146, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 147, 313, 313, 304, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 97, 313, 313, 313, 313, 313, 313, 313, 266, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 171, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 146, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 96, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 32, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 33, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 58, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 121, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 96, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 32, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 33, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 58, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 114, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 59, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 230, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 171, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 47, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 121, 313, 313, 313, 313, 313, 114, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 59, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 231, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 172, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 47, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 248, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 51, 312, 52, 312, 312, 312, 312, - 312, 100, 312, 101, 312, 312, 312, 312, 98, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 7, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 249, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 51, 313, 52, + 313, 313, 313, 313, 313, 100, 313, 101, 313, 313, + 313, 313, 98, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 7, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 220, 312, 312, 312, - 312, 149, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 231, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 48, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 190, 312, - 189, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 221, 313, 313, 313, 313, 149, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 232, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 48, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 191, 313, 190, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 16, 17, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 62, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 197, 312, 312, 312, 312, 312, - 312, 103, 312, 102, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 181, 312, 312, 312, 312, - 312, 312, 312, 312, 129, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 81, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 16, 17, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 62, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 198, + 313, 313, 313, 313, 313, 313, 103, 313, 102, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 182, 313, 313, 313, 313, 313, 313, 313, 313, 129, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 81, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 210, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 85, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 55, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 184, - 185, 312, 312, 312, 259, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 6, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 211, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 85, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 55, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 185, 186, 313, 313, 313, 260, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 6, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 263, - 312, 312, 312, 312, 312, 312, 284, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 42, 312, 312, - 312, 312, 44, 312, 312, 312, 312, 312, 312, 312, - 312, 45, 312, 312, 312, 312, 312, 312, 312, 312, - 177, 312, 312, 312, 124, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 202, 312, 178, 312, 312, - 312, 217, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 264, 313, 313, 313, 313, 313, + 313, 285, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 42, 313, 313, 313, 313, 44, 313, + 313, 313, 313, 313, 313, 313, 313, 45, 313, 313, + 313, 313, 313, 313, 313, 313, 178, 313, 313, 313, + 124, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 203, 313, 179, 313, 313, 313, 218, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 46, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 126, 108, 312, 109, 312, 312, 312, 107, 312, - 312, 312, 312, 312, 312, 312, 312, 144, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 247, - 312, 312, 312, 312, 312, 312, 312, 312, 179, 312, - 312, 312, 312, 312, 182, 312, 188, 312, 312, 312, - 312, 312, 216, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 95, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 120, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 46, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 126, 108, 313, + 109, 313, 313, 313, 107, 313, 313, 313, 313, 313, + 313, 313, 313, 144, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 248, 313, 313, 313, 313, + 313, 313, 313, 313, 180, 313, 313, 313, 313, 313, + 183, 313, 189, 313, 313, 313, 313, 313, 217, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 95, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 53, 312, 312, 312, 26, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 20, 312, 312, - 312, 312, 312, 312, 27, 36, 312, 154, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 70, 72, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 267, 312, 312, 312, 228, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 110, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 143, 312, + 313, 313, 120, 313, 313, 313, 313, 313, 313, 313, + 53, 313, 313, 313, 26, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 20, 313, 313, 313, 313, 313, + 313, 27, 36, 313, 154, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 70, 72, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 268, + 313, 313, 313, 229, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 110, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 278, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 148, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 208, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 287, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 165, - 312, 312, 312, 312, 312, 312, 312, 312, 104, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 160, 312, + 313, 313, 313, 313, 313, 143, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 279, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 148, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 209, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 288, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 165, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 104, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 172, 312, 312, 312, 312, 312, 132, 312, 312, 312, - 312, 312, 91, 312, 312, 312, 312, 200, 312, 312, - 312, 312, 312, 312, 218, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 239, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 125, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 164, 312, 312, 312, 312, 312, 73, 74, 312, - 312, 312, 312, 312, 54, 312, 312, 312, 312, 312, - 80, 173, 312, 191, 312, 221, 312, 312, 183, 260, - 312, 312, 312, 312, 312, 66, 312, 175, 312, 312, + 313, 313, 313, 313, 313, 313, 160, 313, 173, 313, + 313, 313, 313, 313, 132, 313, 313, 313, 313, 313, + 91, 313, 313, 313, 313, 201, 313, 313, 313, 313, + 313, 313, 219, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 240, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 125, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 164, + 313, 313, 313, 313, 313, 73, 74, 313, 313, 313, + 313, 313, 54, 313, 313, 313, 313, 313, 80, 174, + 313, 192, 313, 222, 313, 313, 184, 261, 313, 313, - 312, 312, 312, 9, 312, 312, 312, 94, 312, 312, - 312, 312, 252, 312, 312, 312, 312, 199, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 163, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 150, 312, - 266, 312, 312, 312, 312, 238, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 212, 312, 312, + 313, 313, 313, 66, 313, 176, 313, 313, 313, 313, + 313, 9, 313, 313, 313, 94, 313, 313, 313, 313, + 253, 313, 313, 313, 313, 200, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 163, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 150, 313, 267, + 313, 313, 313, 313, 239, 313, 313, 313, 313, 313, - 312, 312, 258, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 281, 312, 174, - 312, 312, 312, 312, 312, 312, 312, 65, 67, 312, - 312, 312, 312, 312, 312, 312, 93, 312, 312, 312, - 312, 250, 312, 312, 312, 312, 262, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 204, 34, - 28, 30, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 35, 312, 29, 31, 312, 312, 312, 312, 312, - 312, 312, 312, 90, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 213, 313, 313, 313, + 313, 259, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 282, 313, 175, 313, + 313, 313, 313, 313, 313, 313, 65, 67, 313, 313, + 313, 313, 313, 313, 313, 93, 313, 313, 313, 313, + 251, 313, 313, 313, 313, 263, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 205, 34, + 28, 30, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 35, 313, 29, 31, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 206, 203, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 64, 312, 312, 127, 312, 111, 312, 312, 312, 312, - 312, 312, 312, 312, 145, 13, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 276, 312, 279, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 12, 312, - 312, 22, 312, 312, 312, 256, 312, 312, 312, 312, - 264, 312, 312, 312, 68, 312, 214, 312, 312, 312, - 312, 205, 312, 312, 63, 312, 312, 312, 312, 23, + 313, 313, 313, 90, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 207, 204, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 64, 313, 313, 127, 313, 111, 313, 313, 313, 313, + 313, 313, 313, 313, 145, 13, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 277, 313, 280, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 12, 313, + 313, 22, 313, 313, 313, 257, 313, 313, 313, 313, + 265, 313, 313, 313, 68, 313, 215, 313, 313, 313, - 312, 43, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 159, 158, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 207, 201, 312, 219, 312, - 312, 268, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 75, - 312, 312, 312, 251, 312, 312, 312, 312, 187, 312, - 312, 312, 312, 213, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 285, 286, 156, 312, 312, 69, 312, - 312, 312, 312, 166, 312, 312, 105, 106, 312, 312, + 313, 313, 206, 313, 313, 63, 313, 313, 313, 313, + 23, 313, 43, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 159, 158, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 208, 202, 313, 220, + 313, 313, 269, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 75, 313, 313, 313, 252, 313, 313, 313, 313, 188, + 313, 313, 313, 313, 214, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 286, 287, 156, 313, 313, 69, - 312, 312, 151, 312, 153, 312, 192, 312, 312, 312, - 312, 157, 312, 312, 222, 312, 312, 312, 312, 312, - 312, 312, 134, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 229, 312, 312, 312, 312, 312, - 312, 312, 24, 312, 261, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 193, 312, 312, 249, - 312, 280, 312, 186, 312, 312, 312, 312, 49, 312, - 312, 312, 312, 4, 312, 312, 312, 312, 118, 133, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 225, 37, + 313, 313, 313, 313, 166, 313, 313, 313, 105, 106, + 313, 313, 313, 313, 151, 313, 153, 313, 193, 313, + 313, 313, 313, 157, 313, 313, 223, 313, 313, 313, + 313, 313, 313, 313, 134, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 230, 313, 313, 313, + 313, 313, 313, 313, 24, 313, 262, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 194, 313, + 313, 250, 313, 281, 313, 187, 313, 313, 313, 313, + 49, 313, 313, 313, 313, 4, 313, 313, 313, 313, + 118, 133, 313, 313, 313, 170, 313, 313, 313, 313, - 38, 312, 312, 312, 312, 312, 312, 312, 269, 312, - 312, 312, 312, 312, 312, 237, 312, 312, 312, 312, - 312, 312, 312, 196, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 78, 312, 50, 255, 312, 226, 312, - 312, 312, 312, 11, 312, 312, 312, 312, 312, 312, - 117, 312, 312, 312, 312, 194, 82, 312, 40, 312, - 312, 312, 312, 312, 312, 312, 312, 162, 312, 312, - 312, 312, 312, 136, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 236, 312, 312, 312, 312, 130, 312, - 312, 112, 113, 312, 312, 312, 84, 88, 83, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 226, 37, 38, 313, 313, 313, 313, 313, 313, + 313, 270, 313, 313, 313, 313, 313, 313, 238, 313, + 313, 313, 313, 313, 313, 313, 197, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 78, 313, 50, 256, + 313, 227, 313, 313, 313, 313, 11, 313, 313, 313, + 313, 313, 313, 117, 313, 313, 313, 313, 195, 82, + 313, 40, 313, 313, 313, 313, 313, 313, 313, 313, + 162, 313, 313, 313, 313, 313, 136, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 237, 313, 313, 313, - 76, 312, 312, 312, 312, 312, 10, 312, 312, 312, - 253, 288, 312, 312, 312, 312, 293, 39, 312, 312, - 312, 312, 312, 161, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 89, 87, 312, 77, - 277, 312, 312, 312, 312, 312, 312, 312, 180, 312, - 312, 312, 312, 312, 195, 312, 312, 312, 312, 312, - 312, 312, 312, 152, 71, 312, 312, 312, 312, 312, - 270, 312, 312, 312, 312, 312, 312, 312, 233, 312, - 312, 232, 131, 312, 86, 137, 138, 141, 142, 139, + 313, 130, 313, 313, 112, 113, 313, 313, 313, 84, + 88, 83, 313, 76, 313, 313, 313, 313, 313, 10, + 313, 313, 313, 254, 289, 313, 313, 313, 313, 294, + 39, 313, 313, 313, 313, 313, 161, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 89, + 87, 313, 77, 278, 313, 313, 313, 313, 313, 313, + 313, 181, 313, 313, 313, 313, 313, 196, 313, 313, + 313, 313, 313, 313, 313, 313, 152, 71, 313, 313, + 313, 313, 313, 271, 313, 313, 313, 313, 313, 313, - 140, 79, 312, 254, 312, 312, 312, 312, 155, 312, - 312, 312, 312, 312, 224, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 168, 167, 41, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 92, - 312, 223, 312, 246, 274, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 5, 312, 312, - 215, 312, 312, 275, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 234, 25, 312, 312, 312, 312, 312, + 313, 234, 313, 313, 233, 131, 313, 86, 137, 138, + 141, 142, 139, 140, 79, 313, 255, 313, 313, 313, + 313, 155, 313, 313, 313, 313, 313, 225, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 168, 167, 41, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 92, 313, 224, 313, 247, 275, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 5, 313, 313, 216, 313, 313, 276, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 235, 25, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 236, 313, 313, 313, 135, 313, 313, 313, 313, 313, + 313, 313, 313, 169, 313, 177, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 272, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 293, 313, 313, 243, 313, 313, 313, + 313, 313, 273, 313, 313, 313, 313, 313, 313, 274, + 313, 313, 313, 241, 313, 244, 245, 313, 313, 313, + 313, 313, 242, 246, 0 - 312, 312, 312, 312, 312, 312, 312, 235, 312, 312, - 312, 135, 312, 312, 312, 312, 312, 312, 312, 312, - 169, 312, 176, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 271, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 292, 312, 312, 242, 312, 312, 312, 312, 312, 272, - 312, 312, 312, 312, 312, 312, 273, 312, 312, 312, - 240, 312, 243, 244, 312, 312, 312, 312, 312, 241, - 245, 0 } ; static const YY_CHAR yy_ec[256] = @@ -746,15 +748,15 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3097] = +static const flex_int16_t yy_base[3110] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 1616, 1559, 81, 6016, 6016, 6016, 96, 52, + 90, 112, 1902, 1579, 81, 6033, 6033, 6033, 96, 52, 106, 63, 107, 128, 70, 116, 123, 134, 57, 88, 76, 145, 151, 114, 158, 97, 169, 181, 179, 188, - 194, 129, 1447, 6016, 6016, 6016, 135, 1315, 6016, 6016, - 6016, 146, 1142, 1110, 6016, 6016, 6016, 220, 1034, 6016, - 6016, 6016, 171, 903, 6016, 224, 6016, 228, 157, 818, + 194, 129, 1551, 6033, 6033, 6033, 135, 1315, 6033, 6033, + 6033, 146, 1142, 1110, 6033, 6033, 6033, 220, 1034, 6033, + 6033, 6033, 171, 903, 6033, 224, 6033, 228, 157, 818, 232, 167, 0, 239, 0, 0, 165, 205, 85, 166, 226, 190, 233, 234, 228, 240, 241, 242, 98, 130, 250, 243, 245, 248, 258, 256, 262, 267, 273, 251, @@ -783,9 +785,9 @@ static const flex_int16_t yy_base[3097] = 701, 703, 717, 705, 710, 718, 719, 727, 712, 720, 739, 744, 745, 733, 731, 747, 749, 752, 754, 760, - 755, 757, 763, 764, 765, 766, 773, 768, 6016, 772, + 755, 757, 763, 764, 765, 766, 773, 768, 6033, 772, 774, 782, 784, 786, 790, 787, 796, 794, 777, 804, - 806, 802, 810, 832, 788, 800, 809, 811, 814, 6016, + 806, 802, 810, 832, 788, 800, 809, 811, 814, 6033, 822, 816, 856, 827, 820, 840, 837, 836, 844, 845, 838, 846, 867, 850, 849, 852, 879, 854, 862, 864, 874, 880, 878, 887, 890, 886, 888, 894, 898, 895, @@ -795,648 +797,650 @@ static const flex_int16_t yy_base[3097] = 937, 943, 955, 950, 951, 959, 961, 960, 953, 966, 962, 969, 972, 970, 978, 980, 981, 976, 982, 984, 987, 993, 986, 988, 995, 997, 996, 1000, 1005, 1006, - 1010, 990, 1018, 1001, 6016, 1020, 1012, 1014, 1016, 1024, - 1026, 6016, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, + 1010, 990, 1018, 1001, 6033, 1020, 1012, 1014, 1016, 1024, + 1026, 6033, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, 1046, 1049, 1042, 1050, 1061, 1051, 1059, 1064, 1060, 1063, 1066, 1069, 1072, 1070, 1077, 1073, 1067, 935, 1080, 1094, - 6016, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, + 6033, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, 1105, 1109, 1122, 1123, 1125, 1126, 1130, 1086, 1129, 1131, 1133, 1134, 1136, 1137, 1135, 1138, 1144, 1140, 1145, 1141, - 6016, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, + 6033, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, 1171, 1172, 1174, 1173, 1178, 1192, 1182, 1193, 1189, 1195, 1190, 1191, 1197, 1196, 1200, 1205, 1213, 1210, 1215, 1218, 1226, 1225, 1228, 1235, 1237, 1211, 1230, 1203, 1222, 1234, 1240, 1239, 1238, 1245, 1246, 1253, 1248, 1249, 1251, 1254, 1263, 1255, 1258, 1265, 1262, 1269, 1266, 1259, 1271, 1278, - 1279, 1281, 6016, 1288, 1285, 1286, 1287, 1290, 1297, 1298, + 1279, 1281, 6033, 1288, 1285, 1286, 1287, 1290, 1297, 1298, 1292, 1299, 1302, 1301, 1305, 1304, 1307, 1311, 1312, 1316, 1318, 1321, 1325, 1322, 1323, 1337, 1336, 1338, 1329, 1330, 1346, 1345, 1348, 1349, 1351, 1359, 1341, 1355, 1357, 1366, 1361, 1363, 1364, 1365, 1370, 1367, 1375, 1379, 1382, 1381, - 1389, 1390, 1384, 1395, 1387, 1396, 1392, 1399, 1400, 1401, - 1402, 1411, 1403, 1404, 1408, 1412, 1414, 1415, 1416, 1421, - 1425, 1424, 1429, 1426, 1430, 1431, 1433, 1437, 1439, 1440, - 1442, 1443, 1446, 1454, 1452, 1444, 1462, 1450, 1465, 1466, - 1467, 1468, 1469, 1472, 1471, 1474, 1475, 1483, 1484, 1485, - 1488, 1487, 1492, 1490, 1497, 1489, 1498, 1499, 1503, 1505, - 1506, 1510, 1513, 1516, 1511, 6016, 1507, 1523, 1521, 1524, - 1525, 1529, 1530, 1538, 1531, 1533, 1534, 1535, 1536, 1561, - 6016, 1542, 6016, 6016, 1545, 6016, 6016, 1544, 1543, 6016, + 1389, 1390, 1384, 1395, 1387, 1398, 1392, 1399, 1401, 1402, + 1403, 1411, 1404, 1407, 1412, 1413, 1414, 1415, 1418, 1420, + 1431, 1422, 1426, 1424, 1429, 1433, 1439, 1440, 1441, 1442, + 1444, 1445, 1451, 1446, 1449, 1452, 1455, 1454, 1462, 1458, + 1464, 1469, 1470, 1473, 1472, 1475, 1476, 1484, 1485, 1486, + 1487, 1488, 1491, 1489, 1490, 1496, 1498, 1499, 1504, 1506, + 1505, 1510, 1513, 1516, 1518, 6033, 1511, 1523, 1521, 1524, + 1525, 1507, 1529, 1539, 1534, 1531, 1535, 1536, 1540, 1562, + 6033, 1543, 6033, 6033, 1546, 6033, 6033, 1545, 1544, 6033, - 1558, 1547, 1546, 1567, 1571, 1565, 1551, 1574, 1555, 1584, - 1589, 1577, 1579, 1585, 1586, 1592, 1598, 1587, 1604, 1599, - 1609, 1612, 1613, 1615, 1619, 1621, 1622, 1606, 1624, 1626, - 1629, 1627, 1630, 1632, 1636, 1637, 1633, 1640, 1639, 1649, - 1653, 1642, 1660, 6016, 1657, 1669, 1670, 1666, 1673, 1665, - 1672, 1674, 1645, 1656, 1675, 1676, 1679, 1680, 1677, 1686, - 1681, 1689, 1698, 1688, 6016, 1691, 1693, 1695, 1699, 1701, - 1703, 1708, 1709, 1705, 1711, 1712, 1722, 1714, 1717, 1718, - 1724, 1726, 1728, 6016, 1727, 1735, 1736, 1738, 1740, 1742, - 1744, 1741, 1745, 1746, 1747, 1748, 1749, 1753, 1760, 1759, + 1549, 1548, 1552, 1565, 1568, 1559, 1557, 1572, 1573, 1583, + 1594, 1580, 1576, 1587, 1578, 1588, 1590, 1592, 1607, 1600, + 1609, 1611, 1614, 1618, 1620, 1602, 1621, 1622, 1624, 1625, + 1627, 1626, 1629, 1632, 1635, 1636, 1638, 1631, 1639, 1648, + 1650, 1652, 1659, 6033, 1657, 1660, 1669, 1665, 1672, 1664, + 1668, 1671, 1676, 1678, 1673, 1680, 1682, 1683, 1684, 1686, + 1688, 1691, 1695, 1692, 6033, 1693, 1696, 1694, 1701, 1700, + 1704, 1708, 1710, 1712, 1714, 1715, 1722, 1719, 1717, 1725, + 1726, 1727, 1729, 1730, 6033, 1734, 1739, 1731, 1740, 1742, + 1746, 1748, 1743, 1749, 1750, 1753, 1640, 1754, 1755, 1762, - 1766, 1756, 1769, 1771, 1773, 1774, 1781, 1776, 1782, 1784, - 1785, 1786, 1788, 1789, 1792, 1800, 1801, 1797, 1805, 1798, - 1809, 1813, 1815, 1802, 1814, 1817, 1816, 1823, 1831, 1827, - 1820, 1828, 1835, 1832, 1840, 1833, 1842, 1844, 1845, 1846, - 1848, 1836, 1853, 1854, 1855, 6016, 1856, 1857, 6016, 1861, - 1862, 1884, 1863, 1865, 1867, 1876, 1866, 1868, 1870, 1878, - 1894, 1888, 1904, 1896, 1897, 1906, 1907, 1908, 1909, 1911, - 1915, 1916, 1877, 1917, 1924, 1932, 1928, 1934, 1937, 1919, - 1933, 1935, 1954, 1938, 1939, 1942, 1945, 1946, 1943, 1951, - 1949, 1958, 1964, 1966, 1967, 6016, 1975, 1976, 1970, 1972, + 1758, 1761, 1760, 1757, 1764, 1775, 1777, 1781, 1778, 1783, + 1784, 1785, 1786, 1787, 1788, 1790, 1797, 1800, 1799, 1801, + 1796, 1808, 1811, 1814, 1803, 1812, 1815, 1817, 1825, 1827, + 1828, 1819, 1823, 1835, 1830, 1834, 1839, 1840, 1842, 1843, + 1844, 1846, 1849, 1852, 1851, 1854, 6033, 1853, 1855, 6033, + 1859, 1860, 1882, 1861, 1863, 1865, 1875, 1864, 1866, 1868, + 1876, 1892, 1886, 1902, 1894, 1895, 1904, 1905, 1906, 1907, + 1909, 1913, 1914, 1915, 1878, 1922, 1927, 1926, 1935, 1937, + 1917, 1929, 1932, 1951, 1933, 1936, 1940, 1943, 1946, 1944, + 1953, 1942, 1960, 1962, 1964, 1968, 6033, 1973, 1966, 1974, - 1984, 1981, 1982, 6016, 1987, 1988, 1990, 1998, 1991, 1993, - 1994, 1995, 2002, 2003, 2005, 2004, 2009, 2008, 2007, 2025, - 6016, 2010, 6016, 2020, 2011, 2021, 2022, 2027, 2028, 2030, - 2032, 6016, 6016, 2033, 2039, 2041, 2050, 2046, 6016, 2047, - 2055, 2052, 2057, 2051, 2058, 2061, 2062, 2066, 2067, 2070, - 2068, 2075, 2071, 2076, 2073, 6016, 2089, 1940, 2085, 2091, - 2083, 2093, 2095, 2072, 6016, 2097, 2094, 2101, 2108, 2105, - 2106, 2109, 2111, 2112, 2116, 2117, 2118, 2119, 2120, 2129, - 2130, 2121, 2132, 2135, 2131, 6016, 2128, 2139, 2147, 2143, - 2145, 2142, 2149, 2150, 2152, 2153, 2154, 1879, 2155, 2160, + 1975, 1982, 1978, 1980, 6033, 1985, 1986, 1984, 1996, 1989, + 1987, 1992, 1938, 1991, 2001, 2002, 2003, 2004, 2009, 2007, + 2016, 6033, 2011, 6033, 2008, 2017, 2019, 2018, 2023, 2020, + 2025, 2026, 6033, 6033, 2028, 2034, 2039, 2042, 2044, 6033, + 2029, 2052, 2049, 2055, 2047, 2048, 2054, 2056, 2059, 2060, + 2069, 2062, 2071, 2064, 2073, 2066, 6033, 2081, 2067, 2085, + 2086, 2076, 2087, 2089, 2093, 2083, 6033, 2097, 2099, 2100, + 2107, 2105, 2102, 2108, 2109, 2113, 2110, 2116, 2117, 2118, + 2119, 2129, 2130, 2120, 2122, 2131, 2139, 6033, 2134, 2138, + 2146, 2142, 2144, 2141, 2145, 2148, 2149, 2153, 2157, 2151, - 2161, 2169, 2170, 2162, 2174, 2166, 2167, 2175, 2176, 2182, - 2181, 2183, 2184, 2185, 6016, 2187, 2191, 147, 2193, 2194, - 2196, 2195, 2202, 2198, 2201, 2218, 2219, 2215, 2214, 2217, - 2223, 2224, 2225, 2226, 2227, 1751, 2228, 2229, 6016, 2205, - 2231, 2232, 2234, 2233, 2235, 2242, 6016, 2251, 2254, 2263, - 2253, 2257, 2264, 2265, 2268, 2266, 2269, 2270, 2273, 2272, - 2276, 2278, 6016, 2280, 2283, 2290, 2281, 2291, 2236, 2293, - 2292, 2294, 2298, 2299, 2300, 2303, 2304, 2305, 2306, 2308, - 2312, 2313, 2314, 2319, 2320, 6016, 2331, 2321, 2322, 2323, - 2332, 2333, 2342, 2338, 2340, 2346, 2347, 2360, 2349, 2344, + 2155, 2159, 2161, 2169, 2170, 2167, 2172, 2175, 2165, 2176, + 2179, 2185, 2178, 2183, 2186, 2187, 6033, 2188, 2194, 147, + 2189, 2195, 2197, 2199, 2202, 2201, 2198, 2214, 2219, 2215, + 2221, 2217, 2216, 2224, 2226, 2225, 2227, 2228, 2229, 2232, + 6033, 2234, 2236, 2237, 2239, 2241, 2242, 2252, 6033, 2248, + 2253, 2260, 2256, 2261, 2264, 2265, 2269, 2270, 2272, 2273, + 2274, 2276, 2278, 2280, 6033, 2283, 2285, 2288, 2291, 2295, + 2294, 2296, 2297, 2301, 2302, 2303, 2304, 2306, 2308, 2307, + 2309, 2310, 2317, 2314, 2318, 2322, 2324, 6033, 2331, 2327, + 2332, 2334, 2339, 2335, 2349, 2336, 2337, 2345, 2352, 2359, - 2356, 2351, 2358, 2355, 2367, 2366, 2370, 2376, 2372, 2380, - 2382, 2374, 2378, 2386, 2384, 2392, 2388, 2389, 2405, 2406, - 2398, 2408, 2401, 2390, 2416, 2409, 6016, 2418, 2411, 2423, - 2424, 2431, 2427, 2428, 2429, 2432, 2435, 2437, 2438, 2439, - 2448, 2451, 2447, 2440, 2458, 2445, 2460, 2443, 2449, 2462, - 2465, 2466, 2471, 2473, 6016, 2476, 2472, 2468, 2480, 2483, - 2478, 2485, 2490, 2488, 2486, 2492, 2495, 2496, 2497, 2499, - 2501, 2502, 2503, 2504, 6016, 2509, 2508, 2510, 2514, 2520, - 2518, 2524, 2527, 2530, 2533, 2517, 2534, 2536, 2537, 6016, - 2545, 2547, 2544, 2548, 2546, 2551, 2552, 2554, 2556, 6016, + 2350, 2356, 2366, 2361, 2369, 2370, 2377, 2375, 2376, 2383, + 2373, 2385, 2387, 2388, 2389, 2391, 2393, 2396, 2395, 2397, + 2404, 2405, 2406, 2410, 2403, 2424, 2429, 2346, 6033, 2416, + 2418, 2422, 2428, 2436, 2432, 2431, 2434, 2438, 2442, 2443, + 2444, 2445, 2454, 2446, 2449, 2450, 2455, 2456, 2458, 2461, + 2465, 2466, 2469, 2472, 2473, 2476, 2243, 6033, 2477, 2479, + 2478, 2481, 2486, 2482, 2493, 2494, 2496, 2487, 2489, 2499, + 2500, 2503, 2504, 2507, 2505, 2509, 2513, 6033, 2515, 2517, + 2516, 2519, 2522, 2526, 2523, 2525, 2535, 2537, 2529, 2538, + 2539, 2540, 6033, 2549, 2551, 2550, 2554, 2552, 2541, 2556, - 2557, 2558, 2565, 2566, 2561, 6016, 2568, 2564, 2569, 2571, - 2572, 2573, 2574, 2579, 2580, 2582, 2585, 2588, 2592, 2593, - 6016, 2594, 2602, 2603, 2595, 2606, 2597, 2607, 2608, 2612, - 2616, 2610, 6016, 2625, 2627, 2628, 2635, 2630, 2632, 2633, - 2636, 2637, 2638, 2640, 2643, 6016, 2646, 2644, 2647, 2652, - 2650, 2648, 2655, 2667, 2657, 2659, 2668, 2664, 2670, 2671, - 2672, 2673, 2676, 2675, 2683, 2686, 2684, 2688, 2689, 2691, - 2701, 2703, 2704, 2706, 6016, 2709, 2698, 2711, 2700, 2712, - 2713, 2714, 2715, 2717, 2719, 2724, 2722, 2723, 2731, 2739, - 2732, 2734, 2740, 2741, 2744, 2743, 2745, 2746, 2747, 2755, + 2558, 2559, 6033, 2562, 2563, 2570, 2571, 2566, 6033, 2574, + 2569, 2573, 2575, 2576, 2577, 2580, 2578, 2584, 2585, 2591, + 2600, 2588, 2592, 6033, 2594, 2607, 2602, 2605, 2604, 2608, + 2610, 2615, 2616, 2617, 2618, 6033, 2629, 2627, 2626, 2640, + 2628, 2635, 2636, 2638, 2641, 2642, 2644, 2645, 6033, 2648, + 2650, 2651, 2652, 2655, 2656, 2657, 2664, 2663, 2666, 2667, + 2671, 2672, 2670, 2673, 2677, 2683, 2679, 2682, 2692, 2680, + 2690, 2694, 2698, 2705, 2706, 2701, 2707, 6033, 2710, 2712, + 2704, 2711, 2714, 2717, 2718, 2719, 2721, 2722, 2726, 2723, + 2724, 2739, 2746, 2727, 2734, 2736, 2742, 2744, 2749, 2748, - 2751, 2750, 2763, 2754, 2761, 2768, 2758, 2769, 2770, 2771, - 2772, 2774, 2778, 2779, 2781, 2775, 2783, 2792, 2794, 2796, - 2785, 2797, 2801, 2802, 6016, 2805, 2807, 2803, 2809, 2810, - 2816, 2817, 2819, 2820, 2811, 2825, 2827, 2828, 2833, 2834, - 2836, 2843, 2839, 6016, 2840, 6016, 2841, 2842, 2844, 2854, - 2846, 6016, 2850, 6016, 2857, 2864, 2851, 2855, 6016, 2865, - 2859, 2861, 2872, 2869, 2874, 2875, 2876, 2877, 2882, 2878, - 2880, 2885, 2886, 2888, 2890, 2892, 2896, 2893, 2903, 2905, - 2897, 2906, 2899, 2912, 2914, 2913, 2915, 6016, 2925, 2916, - 2919, 2922, 2926, 2927, 2928, 2930, 2931, 2936, 2937, 2938, + 2750, 2751, 2758, 2757, 2756, 2765, 2760, 2766, 2774, 2764, + 2771, 2773, 2775, 2763, 2776, 2778, 2780, 2784, 2786, 2789, + 2796, 2799, 2801, 2800, 2802, 2803, 2806, 6033, 2791, 2810, + 2807, 2814, 2817, 2819, 2821, 2829, 2820, 2824, 2827, 2836, + 2838, 2828, 2831, 2830, 2841, 2850, 2846, 6033, 2847, 6033, + 2843, 2851, 2852, 2860, 2855, 6033, 2858, 6033, 2859, 2867, + 2863, 2868, 6033, 2869, 2870, 2871, 2873, 2876, 2877, 2878, + 2881, 2882, 2887, 2883, 2885, 2889, 2893, 2894, 2899, 2901, + 2900, 2902, 2907, 2908, 2909, 2910, 2914, 2915, 2916, 2921, + 2922, 6033, 2924, 2925, 2928, 2930, 2931, 2932, 2933, 2939, - 2939, 2945, 2944, 2954, 2950, 2961, 6016, 2953, 2958, 2960, - 2962, 6016, 2964, 2963, 2965, 2971, 2974, 2973, 2975, 2977, - 2981, 2983, 2976, 2986, 2984, 2993, 2994, 6016, 2999, 3000, - 2985, 3003, 3002, 3015, 3007, 3016, 3018, 3020, 3021, 3011, - 3022, 3023, 3025, 3027, 3034, 3035, 3031, 3038, 3033, 3039, - 3047, 3043, 3037, 3041, 3049, 3050, 3051, 3054, 3057, 3058, - 3053, 3059, 3060, 3062, 6016, 3068, 3071, 3072, 3075, 3063, - 3080, 3081, 3082, 3084, 3086, 3085, 3087, 3088, 6016, 3095, - 6016, 3089, 3103, 3098, 3108, 3090, 3109, 3113, 3112, 3117, - 3118, 3119, 3120, 3121, 3122, 3123, 3126, 3134, 3133, 3135, + 2935, 2938, 2937, 2947, 2941, 2951, 2954, 2962, 2948, 2966, + 6033, 2963, 2965, 2967, 2969, 6033, 2971, 2970, 2972, 2978, + 2974, 2980, 2981, 2982, 2983, 2987, 2989, 2997, 3001, 3002, + 3005, 6033, 3004, 3006, 2991, 2990, 3018, 3020, 3021, 3022, + 3027, 3025, 3029, 3030, 2992, 3012, 3032, 3033, 3041, 3044, + 3037, 3045, 3040, 3046, 3048, 3049, 3050, 3053, 3055, 3056, + 3057, 3060, 3061, 3064, 3059, 3062, 3066, 3065, 6033, 3077, + 3067, 3078, 3084, 3081, 3088, 3069, 3089, 3090, 3091, 3094, + 3100, 3092, 6033, 3095, 6033, 3097, 3111, 3104, 3117, 3113, + 3105, 3118, 3120, 3124, 3126, 3127, 3128, 3129, 3130, 3131, - 3148, 3131, 3128, 3136, 3139, 3144, 3149, 6016, 6016, 3150, - 3152, 3155, 3157, 3158, 3159, 3162, 3169, 3166, 3165, 3168, - 3172, 3180, 6016, 3182, 3176, 3184, 3187, 3194, 3185, 3198, - 3199, 3195, 3207, 3202, 6016, 3204, 3205, 3215, 3210, 3211, - 3218, 6016, 3213, 6016, 3216, 3217, 3222, 3225, 3226, 3227, - 3228, 3229, 3232, 3244, 3247, 3233, 3249, 3237, 3245, 3250, - 3251, 3258, 3254, 3255, 3256, 6016, 3260, 3261, 3262, 3265, - 3267, 3268, 3275, 3277, 6016, 3278, 3280, 3282, 3283, 3285, - 3287, 3288, 3289, 3291, 3294, 3290, 3292, 3305, 3298, 3297, - 3307, 3317, 3308, 3319, 6016, 3320, 3314, 3327, 3329, 3322, + 3134, 3135, 3141, 3142, 3139, 3143, 3149, 3151, 3152, 3154, + 3155, 6033, 6033, 3156, 3157, 3158, 3160, 3164, 3172, 3178, + 3171, 3182, 3168, 3174, 3184, 3191, 6033, 3189, 3192, 3188, + 3194, 3204, 3196, 3201, 3211, 3208, 3206, 3215, 3212, 6033, + 3197, 3216, 3225, 3221, 3223, 3228, 6033, 3227, 6033, 3224, + 3229, 3231, 3233, 3236, 3237, 3238, 3240, 3245, 3247, 3257, + 3246, 3256, 3253, 3258, 3260, 3261, 3268, 3263, 3264, 3265, + 6033, 3270, 3267, 3161, 3272, 3281, 3284, 3282, 3271, 6033, + 3275, 3293, 3278, 3288, 3295, 3299, 3296, 3301, 3303, 3304, + 3302, 3305, 3312, 3307, 3309, 3311, 3323, 3326, 3331, 6033, - 3324, 3330, 3331, 3332, 3335, 3337, 3336, 3338, 3340, 3342, - 3339, 3349, 3343, 3356, 3345, 3359, 3365, 3366, 3346, 6016, - 3362, 3369, 3370, 3373, 3372, 3376, 3379, 3383, 3380, 3392, - 3393, 3384, 3387, 3396, 3397, 3404, 3399, 6016, 3409, 3389, - 3412, 3410, 3411, 3416, 3417, 3419, 3420, 3421, 3422, 3429, - 3424, 6016, 3431, 3426, 3436, 3437, 3428, 3451, 3446, 3427, - 3449, 3453, 3450, 3456, 3454, 3458, 3459, 3462, 3463, 6016, - 6016, 3465, 3466, 3468, 6016, 3469, 3467, 3479, 3472, 3475, - 3482, 3485, 3481, 3484, 3486, 3489, 3493, 6016, 3494, 3501, - 3498, 3500, 3508, 3511, 3504, 3512, 3513, 3506, 3514, 3516, + 3313, 3324, 3334, 3336, 3320, 3337, 3338, 3340, 3342, 3343, + 3344, 3345, 3346, 3347, 3348, 3349, 3356, 3351, 3367, 3352, + 3353, 3370, 3380, 3366, 6033, 3358, 3373, 3375, 3381, 3376, + 3384, 3394, 3397, 3382, 3399, 3400, 3386, 3388, 3404, 3406, + 3411, 3412, 6033, 3414, 3413, 3422, 3417, 3418, 3420, 3423, + 3432, 3425, 3427, 3428, 3435, 3430, 6033, 3446, 3441, 3434, + 3443, 3449, 3457, 3452, 3433, 3456, 3459, 3460, 3462, 3465, + 3466, 3467, 3470, 3471, 6033, 6033, 3473, 3474, 3475, 6033, + 3478, 3476, 3489, 3480, 3481, 3490, 3493, 3492, 3482, 3494, + 3496, 3498, 6033, 3504, 3512, 3503, 3510, 3513, 3521, 3519, - 3520, 3519, 3521, 3524, 3535, 3536, 3531, 3527, 3534, 6016, - 3532, 3539, 3540, 3544, 3541, 3548, 6016, 3546, 3549, 3550, - 3555, 3558, 3562, 3559, 3568, 3569, 3571, 3572, 3573, 3574, - 3576, 3583, 3580, 3579, 3582, 3586, 3588, 6016, 3589, 3593, - 3597, 3600, 6016, 3602, 3611, 3612, 3613, 3603, 3614, 3608, - 3621, 6016, 3616, 3618, 3623, 3624, 3631, 3626, 3633, 3630, - 6016, 3632, 3634, 3636, 6016, 3637, 3638, 3646, 3651, 3643, - 3658, 3654, 3656, 3659, 3655, 6016, 3657, 6016, 3666, 3667, - 3670, 6016, 3668, 3672, 3673, 3675, 3676, 3677, 3681, 3688, - 3683, 3689, 3690, 3691, 3692, 3694, 3701, 3693, 3697, 3700, + 3511, 3520, 3524, 3526, 3525, 3527, 3528, 3531, 3532, 3540, + 3541, 3536, 3538, 3539, 6033, 3542, 3547, 3549, 3551, 3548, + 3555, 6033, 3552, 3560, 3565, 3568, 3563, 3576, 3573, 3578, + 3580, 3561, 3581, 3583, 3585, 3584, 3586, 3593, 3588, 3591, + 3598, 3599, 3601, 6033, 3607, 3608, 3592, 3610, 6033, 3614, + 3621, 3617, 3628, 3618, 3625, 3623, 3632, 6033, 3627, 3629, + 3631, 3634, 3642, 3638, 3646, 3637, 6033, 3641, 3645, 3647, + 6033, 3648, 3654, 3657, 3662, 3650, 3669, 3665, 3667, 3668, + 3666, 6033, 3673, 6033, 3676, 3677, 3680, 6033, 3682, 3683, + 3685, 3687, 3684, 3691, 3692, 3699, 3688, 3700, 3701, 3702, - 3702, 6016, 3712, 3704, 3705, 3719, 3717, 3709, 3707, 3725, - 3723, 6016, 6016, 3732, 6016, 3734, 3727, 3729, 6016, 3733, - 3735, 3744, 3739, 3740, 3750, 3747, 3751, 6016, 3753, 3742, - 3754, 3757, 3758, 3761, 3763, 3764, 3765, 3767, 3768, 6016, - 3769, 3771, 3778, 3770, 3772, 3781, 3780, 3786, 6016, 3790, - 3794, 3793, 3797, 3798, 6016, 3799, 6016, 3800, 3801, 3803, - 3807, 3804, 6016, 3812, 3813, 3817, 3819, 3820, 3822, 3821, - 3828, 3829, 3830, 3837, 3834, 3835, 3832, 6016, 3836, 3838, - 3842, 3843, 3846, 3849, 3857, 3853, 3854, 3859, 3860, 3863, - 3866, 3864, 3870, 3872, 3874, 3867, 6016, 3875, 3880, 3873, + 3703, 3705, 3712, 3704, 3711, 3713, 3714, 6033, 3715, 3717, + 3723, 3724, 3729, 3718, 3726, 3734, 3733, 6033, 6033, 3737, + 6033, 3740, 3741, 3742, 6033, 3744, 3748, 3751, 3749, 3752, + 3754, 3761, 3755, 6033, 3764, 3750, 3767, 3765, 3769, 3772, + 3773, 3775, 3776, 3777, 3780, 6033, 3778, 3779, 3782, 3783, + 3788, 3793, 3789, 3795, 6033, 3800, 3804, 3803, 3807, 3809, + 6033, 3810, 6033, 3811, 3813, 3814, 3818, 3817, 6033, 3823, + 3824, 3828, 3830, 3832, 3831, 3834, 3835, 3841, 3842, 3849, + 3845, 3844, 3846, 6033, 3847, 3851, 3853, 3860, 3848, 3855, + 3864, 3867, 3868, 3869, 3873, 3877, 3871, 3878, 3884, 3882, - 3889, 3886, 3890, 6016, 3891, 3892, 3893, 6016, 3896, 3899, - 3901, 3905, 3900, 3906, 3907, 3908, 3911, 6016, 3913, 3915, - 3912, 3916, 3928, 3920, 6016, 6016, 3930, 6016, 3931, 3917, - 3935, 3934, 3914, 3938, 3942, 3944, 3946, 3943, 3951, 3954, - 3948, 3964, 3966, 3971, 3967, 3968, 3957, 6016, 6016, 3973, - 3974, 3969, 3980, 3981, 3983, 3984, 3991, 3987, 3993, 3997, - 3998, 4005, 6016, 3986, 3988, 4006, 6016, 4001, 4004, 4007, - 4012, 4011, 4013, 4017, 4014, 4015, 4018, 4022, 4019, 4024, - 4032, 4025, 4029, 4028, 4038, 4035, 4036, 4045, 6016, 4042, - 4046, 4049, 4052, 4053, 4055, 4057, 4058, 4059, 6016, 4056, + 3888, 3874, 6033, 3886, 3894, 3880, 3903, 3899, 3900, 3904, + 6033, 3905, 3907, 3908, 6033, 3906, 3890, 3914, 3921, 3915, + 3918, 3922, 3925, 3926, 6033, 3928, 3930, 3924, 3927, 3929, + 3937, 6033, 6033, 3943, 6033, 3945, 3931, 3935, 3947, 3948, + 3952, 3956, 3957, 3959, 3953, 3960, 3963, 3967, 3975, 3976, + 3977, 3978, 3979, 3982, 6033, 6033, 3984, 3985, 3988, 3990, + 3991, 3993, 3994, 4001, 3998, 4006, 4009, 3999, 4016, 6033, + 4013, 4014, 4015, 6033, 3996, 4018, 4020, 4022, 4024, 4026, + 4025, 4027, 4028, 4030, 4032, 4035, 4036, 4040, 4038, 4042, + 4046, 4048, 4049, 4050, 4056, 6033, 4058, 4057, 4059, 4060, - 4061, 4063, 4069, 4062, 4072, 4083, 4087, 4089, 4064, 4081, - 4090, 4092, 4096, 4093, 6016, 4097, 4099, 4100, 4103, 4106, - 4108, 4109, 4111, 4112, 4114, 4116, 4117, 4124, 4126, 4118, - 4127, 4121, 4129, 6016, 4133, 4140, 4134, 4142, 4137, 4067, - 4143, 4144, 4150, 4147, 4152, 4151, 4157, 6016, 4154, 4158, - 4161, 4159, 4165, 4168, 4172, 4169, 4171, 6016, 4179, 4162, - 4173, 4175, 4183, 4185, 4188, 4190, 4193, 4192, 4195, 6016, - 4196, 4199, 4200, 4197, 4206, 4207, 4211, 4209, 6016, 4212, - 4218, 4210, 4226, 4221, 4230, 4227, 4229, 4231, 4233, 4236, - 4238, 4240, 4241, 4243, 4237, 4254, 4259, 4257, 6016, 4244, + 4061, 4063, 4067, 4069, 4070, 6033, 4071, 4073, 4074, 4079, + 4075, 4080, 4094, 4097, 4099, 4087, 4090, 4100, 4104, 4106, + 4107, 6033, 4109, 4108, 4110, 4111, 4118, 4120, 4115, 4122, + 4124, 4126, 4129, 4127, 4136, 4138, 4131, 4139, 4133, 4140, + 6033, 4141, 4150, 4143, 4152, 4153, 4154, 4155, 4156, 4164, + 4161, 4166, 4165, 4168, 6033, 4169, 4170, 4173, 4174, 4176, + 4177, 4182, 4179, 4183, 6033, 4186, 4190, 4192, 4191, 4195, + 4197, 4200, 4201, 4203, 4204, 4211, 6033, 4222, 4207, 4218, + 4220, 4208, 4217, 4221, 4227, 4209, 6033, 4234, 4236, 4228, + 4244, 4224, 4246, 4247, 4248, 4237, 4250, 4251, 4249, 4255, - 6016, 4258, 4262, 4266, 4268, 4265, 6016, 4255, 4270, 4273, - 4274, 4275, 6016, 4276, 4278, 4280, 4279, 6016, 4290, 4292, - 4281, 4296, 4283, 4298, 6016, 4303, 4304, 4300, 4312, 4315, - 4311, 4313, 4316, 4314, 4318, 4319, 4320, 4328, 4323, 4324, - 6016, 4330, 4333, 4340, 4341, 4335, 4325, 4343, 4349, 4342, - 6016, 4351, 4350, 4352, 4353, 4354, 4357, 4359, 4366, 4362, - 4361, 6016, 4365, 4369, 4382, 4363, 4373, 6016, 6016, 4378, - 4383, 4385, 4380, 4386, 6016, 4389, 4396, 4391, 4395, 4398, - 6016, 6016, 4400, 6016, 4397, 6016, 4402, 4401, 6016, 6016, - 4404, 4405, 4408, 4414, 4411, 6016, 4421, 6016, 4418, 4422, + 4256, 4257, 4259, 4267, 4274, 4271, 6033, 4260, 6033, 4269, + 4276, 4285, 4281, 4272, 6033, 4270, 4283, 4288, 4289, 4284, + 6033, 4291, 4295, 4297, 4296, 6033, 4298, 4300, 4302, 4306, + 4310, 4313, 6033, 4316, 4317, 4319, 4327, 4329, 4326, 4328, + 4330, 4332, 4333, 4334, 4335, 4343, 4338, 4340, 6033, 4346, + 4348, 4355, 4356, 4349, 4339, 4360, 4363, 4357, 6033, 4366, + 4365, 4367, 4368, 4369, 4372, 4374, 4381, 4377, 4376, 6033, + 4380, 4384, 4397, 4378, 4388, 6033, 6033, 4393, 4398, 4400, + 4395, 4401, 6033, 4404, 4411, 4406, 4410, 4413, 6033, 6033, + 4415, 6033, 4412, 6033, 4417, 4416, 6033, 6033, 4419, 4420, - 4424, 4425, 4427, 6016, 4426, 4429, 4434, 6016, 4428, 4436, - 4435, 4439, 6016, 4443, 4446, 4438, 4444, 6016, 4450, 4456, - 4458, 4448, 4452, 4459, 4465, 4460, 4468, 4469, 4470, 4471, - 4472, 4479, 4484, 4486, 4488, 4480, 4476, 4490, 4496, 4498, - 4489, 4493, 4500, 4502, 4504, 4506, 4508, 4510, 4511, 4512, - 4514, 4515, 4513, 4523, 4516, 4517, 4530, 4526, 4519, 4531, - 4534, 4532, 4538, 4539, 4541, 4542, 4543, 6016, 4544, 4546, - 4548, 4560, 4553, 4549, 4559, 4566, 4570, 4572, 6016, 4574, - 6016, 4576, 4561, 4578, 4580, 6016, 4581, 4582, 4583, 4584, - 4585, 4586, 4588, 4587, 4591, 4592, 4595, 6016, 4598, 4593, + 4423, 4429, 4426, 6033, 4436, 6033, 4433, 4437, 4439, 4440, + 4442, 6033, 4441, 4444, 4449, 6033, 4443, 4451, 4450, 4454, + 6033, 4458, 4461, 4453, 4459, 6033, 4465, 4471, 4473, 4463, + 4467, 4474, 4480, 4475, 4483, 4484, 4485, 4486, 4487, 4488, + 4492, 4495, 4499, 4501, 4502, 4503, 4504, 4510, 4512, 4505, + 4508, 4515, 4516, 4519, 4522, 4524, 4526, 4527, 4528, 4529, + 4530, 4531, 4534, 4533, 4537, 4544, 4545, 4546, 4547, 4548, + 4549, 4550, 4555, 4559, 4560, 4562, 6033, 4552, 4558, 4563, + 4566, 4565, 4571, 4578, 4582, 4585, 4587, 6033, 4589, 6033, + 4591, 4593, 4594, 4595, 6033, 4596, 4597, 4598, 4599, 4600, - 4602, 4613, 6016, 4608, 4619, 4603, 4614, 4616, 4620, 4622, - 4624, 4625, 4626, 4628, 4630, 4637, 4633, 4634, 4636, 4638, - 4639, 4644, 4647, 4646, 4654, 4656, 4661, 6016, 4650, 6016, - 4657, 4662, 4663, 4665, 4667, 4668, 4670, 6016, 6016, 4671, - 4673, 4678, 4679, 4674, 4683, 4680, 6016, 4686, 4693, 4696, - 4687, 6016, 4690, 4698, 4699, 4703, 6016, 4704, 4706, 4707, - 4709, 4710, 4713, 4717, 4714, 4720, 4721, 4725, 6016, 6016, - 6016, 6016, 4726, 4728, 4731, 4732, 4734, 4735, 4737, 4739, - 4740, 6016, 4742, 6016, 6016, 4743, 4749, 4751, 4752, 4753, - 4756, 4758, 4760, 6016, 4759, 4764, 4766, 4762, 4773, 4779, + 4601, 4602, 4603, 4606, 4607, 4612, 6033, 4618, 4608, 4622, + 4627, 6033, 4628, 4633, 4629, 4634, 4635, 4636, 4638, 4639, + 4643, 4641, 4645, 4649, 4646, 4650, 4654, 4653, 4658, 4655, + 4661, 4662, 4664, 4671, 4674, 4678, 6033, 4665, 6033, 4673, + 4679, 4680, 4683, 4685, 4686, 4688, 6033, 6033, 4689, 4691, + 4696, 4687, 4693, 4700, 4697, 6033, 4704, 4708, 4714, 4705, + 6033, 4710, 4715, 4716, 4721, 6033, 4717, 4722, 4723, 4733, + 4724, 4738, 4734, 4740, 4726, 4741, 4728, 4745, 6033, 6033, + 6033, 6033, 4746, 4730, 4751, 4754, 4755, 4756, 4757, 4759, + 4760, 6033, 4762, 6033, 6033, 4764, 4771, 4763, 4773, 4772, - 4763, 4776, 4780, 4782, 4789, 4785, 4786, 4784, 4788, 4792, - 4795, 6016, 6016, 4796, 4802, 4803, 4811, 4807, 4808, 4820, - 4815, 4816, 4817, 4818, 4822, 4804, 4829, 4834, 4827, 4824, - 6016, 4835, 4838, 6016, 4831, 6016, 4837, 4839, 4845, 4846, - 4847, 4848, 4849, 4851, 6016, 6016, 4852, 4853, 4855, 4862, - 4858, 4866, 4854, 4865, 4867, 6016, 4868, 6016, 4870, 4872, - 4879, 4880, 4887, 4888, 4891, 4893, 4889, 4894, 6016, 4895, - 4896, 6016, 4898, 4900, 4901, 6016, 4906, 4903, 4911, 4913, - 6016, 4918, 4915, 4920, 6016, 4923, 6016, 4908, 4924, 4926, - 4933, 6016, 4930, 4934, 6016, 4937, 4940, 4941, 4942, 6016, + 4770, 4774, 4779, 6033, 4781, 4785, 4786, 4782, 4793, 4795, + 4798, 4799, 4784, 4788, 4807, 4803, 4809, 4800, 4811, 4813, + 4818, 6033, 6033, 4814, 4820, 4821, 4829, 4825, 4826, 4838, + 4833, 4834, 4835, 4836, 4840, 4822, 4847, 4852, 4845, 4842, + 6033, 4853, 4856, 6033, 4849, 6033, 4855, 4857, 4863, 4864, + 4865, 4866, 4867, 4869, 6033, 6033, 4870, 4871, 4873, 4880, + 4876, 4884, 4872, 4883, 4885, 6033, 4886, 6033, 4888, 4890, + 4897, 4898, 4905, 4906, 4909, 4911, 4907, 4912, 6033, 4913, + 4914, 6033, 4916, 4918, 4919, 6033, 4924, 4921, 4929, 4931, + 6033, 4936, 4933, 4938, 6033, 4941, 6033, 4926, 4942, 4944, - 4931, 6016, 4943, 4946, 4947, 4952, 4953, 4957, 4954, 4958, - 4959, 4966, 4962, 4965, 6016, 6016, 4978, 4964, 4970, 4971, - 4974, 4981, 4979, 4982, 4984, 6016, 6016, 4988, 6016, 4989, - 4992, 6016, 4985, 4996, 4994, 4998, 5000, 5001, 5002, 5006, - 5008, 5014, 5009, 5007, 5019, 5030, 5013, 5034, 5035, 5037, - 5039, 5041, 5015, 5043, 5044, 5020, 5045, 5047, 5049, 6016, - 5051, 5052, 5053, 6016, 5057, 5058, 5060, 5061, 6016, 5063, - 5068, 5070, 5072, 6016, 5073, 5075, 5076, 5078, 5082, 5089, - 5085, 5084, 5086, 6016, 6016, 6016, 5094, 5096, 6016, 5101, - 5092, 5102, 5103, 6016, 5104, 5105, 6016, 6016, 5107, 5109, + 4951, 4948, 6033, 4949, 4952, 6033, 4955, 4958, 4959, 4961, + 6033, 4963, 6033, 4964, 4966, 4967, 4971, 4972, 4976, 4973, + 4977, 4978, 4985, 4983, 4989, 6033, 6033, 4997, 4980, 4988, + 4990, 4994, 5004, 4999, 5001, 5007, 6033, 6033, 5009, 6033, + 5011, 5012, 6033, 5002, 5013, 5017, 5018, 5020, 5021, 5022, + 5026, 5028, 5029, 5030, 5031, 5037, 5049, 5033, 5047, 5053, + 5055, 5057, 5059, 5051, 5061, 5062, 5039, 5063, 5064, 5068, + 6033, 5070, 5071, 5073, 6033, 5076, 5078, 5080, 5081, 6033, + 5090, 5083, 5087, 5093, 6033, 5077, 5098, 5099, 5100, 5101, + 5111, 5094, 5104, 5108, 6033, 6033, 6033, 5114, 5118, 6033, - 5108, 5116, 6016, 5111, 6016, 5112, 6016, 5114, 5115, 5124, - 5122, 6016, 5129, 5135, 6016, 5138, 5141, 5143, 5144, 5126, - 5130, 5145, 6016, 5154, 5147, 5151, 5158, 5155, 5159, 5160, - 5161, 5168, 5163, 5167, 6016, 5170, 5164, 5171, 5177, 5172, - 5175, 5181, 6016, 5183, 6016, 5184, 5185, 5189, 5186, 5187, - 5192, 5194, 5199, 5196, 5206, 5200, 6016, 5208, 5210, 6016, - 5212, 6016, 5214, 6016, 5215, 5216, 5218, 5220, 6016, 5224, - 5217, 5221, 5226, 6016, 5227, 5229, 5230, 5236, 6016, 6016, - 5238, 5246, 5242, 5239, 5251, 5253, 5248, 5255, 5256, 5257, - 5259, 5269, 5241, 5264, 5262, 5271, 5272, 5277, 6016, 6016, + 5121, 5115, 5106, 5122, 6033, 5124, 5125, 5126, 6033, 6033, + 5127, 5128, 5130, 5139, 6033, 5132, 6033, 5135, 6033, 5136, + 5142, 5145, 5148, 6033, 5149, 5158, 6033, 5161, 5164, 5166, + 5167, 5151, 5153, 5168, 6033, 5175, 5174, 5177, 5181, 5170, + 5178, 5184, 5183, 5191, 5186, 5193, 6033, 5190, 5195, 5197, + 5203, 5187, 5198, 5196, 6033, 5208, 6033, 5205, 5209, 5210, + 5212, 5215, 5217, 5219, 5220, 5223, 5229, 5224, 6033, 5233, + 5235, 6033, 5226, 6033, 5238, 6033, 5230, 5239, 5240, 5245, + 6033, 5242, 5244, 5248, 5251, 6033, 5252, 5254, 5257, 5259, + 6033, 6033, 5260, 5267, 5269, 6033, 5262, 5266, 5273, 5263, - 6016, 5273, 5280, 5287, 5284, 5286, 5294, 5290, 6016, 5291, - 5292, 5293, 5301, 5298, 5303, 6016, 5299, 5304, 5305, 5306, - 5310, 5307, 5314, 6016, 5318, 5321, 5324, 5313, 5328, 5332, - 5335, 5337, 5338, 6016, 5340, 6016, 6016, 5325, 6016, 5341, - 5342, 5345, 5346, 6016, 5349, 5351, 5350, 5352, 5354, 5356, - 6016, 5366, 5357, 5359, 5368, 6016, 6016, 5372, 6016, 5375, - 5376, 5369, 5385, 5380, 5382, 5387, 5384, 6016, 5388, 5391, - 5393, 5394, 5395, 6016, 5396, 5397, 5399, 5400, 5403, 5402, - 5405, 5407, 5409, 6016, 5410, 5412, 5430, 5426, 6016, 5413, - 5425, 6016, 6016, 5435, 5437, 5358, 6016, 6016, 6016, 5440, + 5278, 5275, 5279, 5281, 5291, 5287, 5143, 5282, 5290, 5292, + 5293, 6033, 6033, 6033, 5296, 5298, 5305, 5304, 5307, 5315, + 5311, 6033, 5312, 5314, 5313, 5322, 5320, 5324, 6033, 5321, + 5325, 5326, 5327, 5331, 5328, 5335, 6033, 5342, 5346, 5334, + 5336, 5348, 5355, 5357, 5359, 5360, 6033, 5362, 6033, 6033, + 5349, 6033, 5352, 5363, 5364, 5366, 6033, 5370, 5373, 5371, + 5372, 5376, 5378, 6033, 5388, 5379, 5383, 5384, 6033, 6033, + 5393, 6033, 5395, 5396, 5390, 5403, 5398, 5400, 5406, 5407, + 6033, 5409, 5411, 5413, 5414, 5415, 6033, 5416, 5417, 5419, + 5420, 5423, 5422, 5425, 5427, 5428, 6033, 5430, 5432, 5450, - 6016, 5442, 5446, 5450, 5454, 5445, 6016, 5456, 5453, 5458, - 6016, 6016, 5457, 5459, 5460, 5462, 6016, 6016, 5463, 5466, - 5464, 5467, 5469, 6016, 5474, 5478, 5480, 5483, 5486, 5475, - 5489, 5491, 5499, 5501, 5496, 5497, 5502, 5504, 5505, 5506, - 5508, 5517, 5513, 5515, 5527, 5524, 6016, 6016, 5531, 6016, - 6016, 5533, 5535, 5537, 5539, 5541, 5543, 5545, 6016, 5546, - 5548, 5549, 5417, 5550, 6016, 5552, 5554, 5551, 5556, 5516, - 5559, 5557, 5562, 6016, 6016, 5563, 5564, 5565, 5573, 5568, - 6016, 5575, 5582, 5579, 5580, 5577, 5583, 5584, 6016, 5588, - 5589, 6016, 6016, 5587, 6016, 6016, 6016, 6016, 6016, 6016, + 5446, 6033, 5434, 5445, 6033, 6033, 5456, 5460, 5449, 6033, + 6033, 6033, 5462, 6033, 5464, 5468, 5472, 5476, 5467, 6033, + 5478, 5457, 5479, 6033, 6033, 5480, 5481, 5482, 5484, 6033, + 6033, 5485, 5488, 5486, 5489, 5491, 6033, 5494, 5496, 5502, + 5508, 5514, 5504, 5492, 5509, 5517, 5526, 5499, 5515, 5522, + 5523, 5527, 5525, 5534, 5535, 5531, 5539, 5541, 5542, 6033, + 6033, 5546, 6033, 6033, 5549, 5551, 5553, 5555, 5557, 5559, + 5561, 6033, 5562, 5564, 5565, 5566, 5567, 6033, 5569, 5573, + 5568, 5576, 5570, 5579, 5575, 5585, 6033, 6033, 5577, 5591, + 5581, 5592, 5586, 6033, 5596, 5603, 5598, 5600, 5601, 5606, - 6016, 6016, 5592, 6016, 5590, 5605, 5607, 5609, 6016, 5597, - 5610, 5518, 5611, 5599, 6016, 5612, 5614, 5616, 5615, 5618, - 5622, 5624, 5626, 5628, 5627, 5629, 5632, 5630, 5636, 5634, - 5638, 5644, 6016, 6016, 6016, 5642, 5640, 5651, 5652, 5663, - 5664, 5667, 5669, 5653, 5657, 5670, 5671, 5674, 5659, 5675, - 5686, 5678, 5681, 5682, 5683, 5689, 5685, 5691, 5695, 6016, - 5696, 6016, 5697, 6016, 6016, 5699, 5701, 5704, 5705, 5713, - 5714, 5706, 5709, 5716, 5718, 5726, 5728, 6016, 5717, 5719, - 6016, 5729, 5730, 6016, 5721, 5731, 5732, 5733, 5737, 5740, - 5742, 5744, 5753, 6016, 6016, 5745, 5748, 5754, 5756, 5757, + 5602, 6033, 5608, 5610, 6033, 6033, 5611, 6033, 6033, 6033, + 6033, 6033, 6033, 6033, 6033, 5613, 6033, 5609, 5628, 5630, + 5632, 6033, 5615, 5625, 5617, 5623, 5633, 6033, 5635, 5637, + 5636, 5640, 5639, 5644, 5646, 5649, 5651, 5650, 5652, 5655, + 5653, 5660, 5657, 5656, 5674, 6033, 6033, 6033, 5661, 5663, + 5665, 5671, 5682, 5684, 5687, 5689, 5673, 5690, 5691, 5693, + 5695, 5696, 5697, 5705, 5701, 5702, 5703, 5704, 5707, 5711, + 5709, 5717, 6033, 5718, 6033, 5713, 6033, 6033, 5720, 5722, + 5727, 5725, 5736, 5738, 5729, 5734, 5737, 5740, 5742, 5749, + 6033, 5739, 5746, 6033, 5750, 5751, 6033, 5752, 5753, 5754, - 5764, 5760, 5763, 5767, 5769, 5770, 5777, 6016, 5776, 5778, - 5780, 6016, 5781, 5782, 5784, 5786, 5787, 5794, 5790, 5795, - 6016, 5792, 6016, 5797, 5798, 5799, 5800, 5802, 5803, 5811, - 5813, 5814, 6016, 5815, 5822, 5817, 5824, 5828, 5826, 5830, - 5820, 5833, 5835, 5842, 5846, 5843, 5847, 5834, 5851, 5838, - 6016, 5849, 5852, 6016, 5855, 5858, 5859, 5861, 5864, 6016, - 5867, 5862, 5868, 5869, 5873, 5875, 6016, 5877, 5884, 5879, - 6016, 5885, 6016, 6016, 5888, 5889, 5891, 5895, 5897, 6016, - 6016, 6016, 5924, 5931, 5938, 5945, 5952, 88, 5959, 5966, - 5973, 5980, 5987, 5994, 6001, 6008 + 5757, 5761, 5759, 5762, 5763, 5776, 6033, 6033, 5765, 5769, + 5771, 5780, 5777, 5789, 5791, 5781, 5788, 5794, 5784, 5801, + 6033, 5797, 5800, 5807, 6033, 5798, 5804, 5808, 5809, 5810, + 5817, 5812, 5813, 6033, 5818, 6033, 5821, 5824, 5822, 5816, + 5825, 5830, 5837, 5834, 5832, 6033, 5814, 5841, 5846, 5847, + 5849, 5851, 5852, 5853, 5855, 5857, 5858, 5864, 5861, 5866, + 5867, 5869, 5870, 6033, 5876, 5871, 6033, 5877, 5878, 5879, + 5880, 5884, 6033, 5888, 5881, 5891, 5892, 5895, 5896, 6033, + 5902, 5905, 5906, 6033, 5907, 6033, 6033, 5909, 5897, 5908, + 5918, 5920, 6033, 6033, 6033, 5941, 5948, 5955, 5962, 5969, + 88, 5976, 5983, 5990, 5997, 6004, 6011, 6018, 6025 } ; -static const flex_int16_t yy_def[3097] = +static const flex_int16_t yy_def[3110] = { 0, - 3082, 1, 3083, 3083, 3084, 3084, 3085, 3085, 3086, 3086, - 3087, 3087, 3082, 3088, 3082, 3082, 3082, 3082, 3089, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3090, 3082, 3082, 3082, 3090, 3091, 3082, 3082, - 3082, 3091, 3092, 3082, 3082, 3082, 3082, 3092, 3093, 3082, - 3082, 3082, 3093, 3094, 3082, 3095, 3082, 3094, 3094, 3088, - 3088, 3082, 3096, 3089, 3096, 3089, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3095, 1, 3096, 3096, 3097, 3097, 3098, 3098, 3099, 3099, + 3100, 3100, 3095, 3101, 3095, 3095, 3095, 3095, 3102, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3103, 3095, 3095, 3095, 3103, 3104, 3095, 3095, + 3095, 3104, 3105, 3095, 3095, 3095, 3095, 3105, 3106, 3095, + 3095, 3095, 3106, 3107, 3095, 3108, 3095, 3107, 3107, 3101, + 3101, 3095, 3109, 3102, 3109, 3102, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3090, 3090, 3091, 3091, 3092, 3092, 3082, 3093, 3093, - 3094, 3094, 3095, 3095, 3094, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3103, 3103, 3104, 3104, 3105, 3105, 3095, 3106, 3106, + 3107, 3107, 3108, 3108, 3107, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3107, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3107, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3082, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3095, 3101, 3107, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3082, 3082, 3088, 3088, 3082, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3107, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3095, 3095, 3101, 3095, 3095, 3101, 3101, 3095, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3107, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3107, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3095, + 3101, 3095, 3101, 3095, 3101, 3101, 3095, 3095, 3101, 3101, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, - 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, + 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3082, 3088, 3088, + 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3095, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3095, 3101, 3101, 3095, - 3088, 3088, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3095, 3095, + 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3095, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3082, 3082, 3082, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3095, + 3101, 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3095, 3095, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3082, 3082, 3082, 3082, 3082, 3082, + 3101, 3095, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3095, + 3095, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3095, + 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3095, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, - 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3101, 3095, 3101, 3101, 3095, 3095, 3101, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3101, 3095, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3095, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 0, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3095, 3101, 3095, 3095, 3101, 3101, 3101, + 3101, 3101, 3095, 3095, 0, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095 } ; -static const flex_int16_t yy_nxt[6057] = +static const flex_int16_t yy_nxt[6074] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1590,523 +1594,525 @@ static const flex_int16_t yy_nxt[6057] = 757, 71, 71, 760, 71, 762, 764, 766, 71, 763, 71, 765, 71, 771, 71, 768, 71, 71, 71, 71, 71, 767, 774, 71, 776, 773, 780, 777, 71, 769, - 770, 778, 71, 772, 71, 71, 783, 71, 775, 782, + 770, 778, 71, 772, 71, 71, 784, 71, 775, 782, - 71, 784, 71, 71, 785, 71, 779, 781, 71, 71, - 787, 789, 71, 71, 71, 71, 71, 71, 795, 788, - 796, 71, 786, 790, 71, 71, 797, 71, 71, 71, - 791, 792, 804, 793, 71, 794, 798, 71, 71, 71, - 799, 802, 71, 71, 71, 800, 71, 801, 809, 803, - 71, 805, 71, 71, 806, 71, 71, 71, 807, 71, - 143, 816, 808, 71, 810, 71, 811, 71, 818, 819, - 812, 813, 814, 817, 815, 71, 820, 822, 71, 71, - 71, 71, 71, 823, 71, 71, 821, 71, 71, 827, - 828, 829, 830, 831, 826, 824, 71, 71, 71, 825, + 71, 785, 71, 71, 786, 71, 779, 781, 71, 783, + 788, 71, 71, 790, 71, 71, 71, 71, 796, 789, + 71, 797, 787, 791, 71, 71, 71, 71, 71, 798, + 792, 71, 793, 71, 794, 71, 795, 71, 805, 71, + 799, 800, 71, 803, 71, 801, 71, 802, 804, 806, + 810, 807, 71, 71, 71, 71, 808, 71, 71, 71, + 819, 809, 71, 817, 71, 71, 820, 71, 71, 812, + 811, 71, 813, 814, 815, 71, 816, 71, 818, 822, + 824, 823, 71, 71, 821, 71, 71, 825, 71, 71, + 828, 829, 830, 831, 832, 827, 826, 71, 71, 71, - 71, 71, 71, 152, 833, 71, 840, 834, 838, 836, - 71, 71, 71, 839, 832, 835, 71, 837, 71, 71, - 71, 842, 846, 71, 71, 841, 71, 847, 849, 71, - 852, 843, 844, 850, 71, 848, 71, 71, 71, 851, - 845, 854, 71, 71, 71, 858, 71, 71, 71, 71, - 855, 71, 859, 860, 853, 71, 71, 71, 71, 71, - 71, 857, 873, 876, 71, 861, 872, 856, 71, 863, - 870, 71, 71, 862, 71, 871, 875, 874, 71, 864, - 71, 877, 880, 865, 71, 878, 866, 71, 882, 879, - 71, 883, 71, 867, 868, 891, 869, 71, 71, 71, + 71, 71, 152, 71, 71, 834, 840, 839, 835, 71, + 837, 71, 71, 841, 836, 833, 838, 71, 71, 71, + 71, 843, 847, 71, 71, 842, 71, 848, 850, 71, + 853, 71, 844, 845, 71, 849, 71, 71, 71, 846, + 851, 855, 71, 852, 71, 857, 859, 71, 71, 71, + 856, 861, 71, 71, 854, 860, 71, 71, 71, 71, + 858, 71, 71, 874, 143, 71, 862, 873, 875, 877, + 71, 871, 71, 864, 863, 71, 872, 876, 71, 878, + 865, 71, 879, 880, 866, 71, 71, 867, 881, 71, + 884, 71, 71, 71, 868, 869, 71, 870, 892, 882, - 71, 881, 71, 884, 885, 71, 886, 897, 895, 887, - 896, 71, 71, 892, 888, 3082, 893, 71, 898, 71, - 889, 890, 71, 900, 894, 71, 71, 899, 71, 902, - 901, 904, 71, 903, 71, 71, 905, 71, 907, 71, - 71, 908, 71, 71, 912, 71, 71, 906, 911, 71, - 71, 915, 71, 71, 921, 71, 919, 932, 71, 909, - 913, 910, 71, 914, 916, 917, 71, 922, 933, 71, - 71, 920, 923, 71, 918, 924, 925, 926, 71, 71, - 928, 929, 71, 71, 927, 71, 71, 71, 71, 71, - 71, 930, 71, 71, 71, 931, 934, 936, 939, 71, + 71, 71, 897, 71, 896, 71, 883, 71, 885, 886, + 893, 887, 898, 71, 888, 71, 895, 906, 894, 889, + 71, 899, 71, 901, 71, 890, 891, 71, 900, 902, + 903, 71, 905, 71, 71, 71, 904, 71, 71, 71, + 71, 909, 71, 913, 71, 71, 907, 912, 71, 71, + 916, 71, 71, 71, 908, 920, 918, 977, 910, 911, + 914, 71, 915, 71, 922, 71, 923, 926, 921, 917, + 71, 924, 71, 71, 919, 925, 927, 71, 71, 929, + 930, 71, 71, 928, 71, 71, 71, 931, 933, 71, + 934, 71, 932, 71, 935, 71, 71, 71, 940, 71, - 937, 71, 71, 940, 71, 942, 71, 935, 71, 938, - 941, 71, 71, 944, 71, 945, 71, 947, 71, 949, - 943, 71, 71, 948, 71, 71, 950, 71, 957, 955, - 71, 71, 946, 953, 956, 71, 951, 71, 954, 71, - 71, 71, 964, 952, 962, 958, 960, 965, 71, 71, - 959, 71, 963, 71, 71, 71, 967, 71, 71, 71, - 71, 71, 71, 961, 71, 975, 71, 978, 973, 71, - 966, 1218, 71, 71, 968, 969, 971, 970, 972, 71, - 976, 979, 71, 974, 71, 977, 71, 71, 981, 71, - 983, 980, 985, 986, 71, 71, 982, 71, 71, 71, + 937, 71, 943, 938, 71, 71, 71, 71, 71, 71, + 941, 936, 942, 71, 71, 945, 939, 71, 946, 948, + 950, 71, 949, 71, 944, 71, 951, 71, 71, 956, + 71, 947, 71, 958, 957, 71, 954, 952, 71, 71, + 71, 955, 71, 71, 71, 959, 964, 71, 961, 966, + 953, 967, 71, 71, 965, 71, 71, 960, 969, 71, + 963, 71, 71, 71, 962, 968, 71, 71, 71, 980, + 71, 71, 975, 71, 71, 71, 970, 71, 973, 971, + 981, 972, 974, 985, 984, 978, 982, 979, 71, 976, + 71, 71, 983, 988, 71, 987, 71, 71, 71, 71, - 984, 71, 71, 3082, 988, 71, 990, 995, 996, 987, - 71, 71, 998, 71, 71, 71, 1000, 989, 71, 991, - 1001, 993, 71, 992, 997, 994, 71, 71, 71, 71, - 71, 999, 1002, 71, 1003, 1006, 71, 1008, 1009, 1004, - 71, 71, 1013, 1010, 71, 71, 71, 1005, 71, 71, - 1007, 1011, 1015, 71, 1012, 71, 1018, 152, 71, 71, - 1017, 71, 1021, 1020, 1016, 1014, 71, 71, 71, 71, - 71, 1022, 1024, 1019, 71, 71, 71, 1036, 71, 71, - 71, 71, 1037, 71, 1027, 1041, 1023, 1025, 1039, 71, - 71, 71, 71, 1026, 1028, 1038, 1029, 71, 1042, 1059, + 71, 71, 986, 71, 997, 990, 992, 998, 1000, 71, + 71, 989, 71, 71, 71, 1002, 71, 991, 1003, 993, + 995, 71, 994, 996, 71, 71, 999, 71, 71, 1001, + 71, 1004, 71, 1008, 1011, 1005, 71, 1006, 71, 1010, + 71, 71, 1015, 71, 1012, 1007, 1017, 71, 71, 1014, + 1013, 1009, 71, 71, 1020, 152, 71, 71, 1019, 71, + 1023, 1022, 71, 1016, 71, 71, 71, 71, 71, 1026, + 1018, 1021, 71, 71, 71, 1038, 71, 71, 71, 71, + 1039, 71, 1029, 1043, 1024, 1025, 1027, 1041, 71, 71, + 1028, 71, 1030, 1040, 1031, 71, 1044, 1062, 1032, 71, - 1030, 71, 1031, 1182, 1040, 1043, 1032, 71, 1033, 71, - 71, 1046, 1044, 1034, 1049, 1045, 1047, 71, 1035, 71, - 71, 71, 71, 1048, 71, 1052, 1050, 1055, 71, 71, - 71, 1061, 71, 1054, 1051, 1053, 1060, 71, 1056, 1062, - 1063, 71, 1064, 1058, 1065, 71, 71, 71, 71, 1057, - 71, 71, 71, 71, 1066, 71, 71, 1077, 71, 71, - 1080, 1081, 71, 1076, 71, 1067, 1068, 71, 1069, 1078, - 1079, 71, 1082, 1070, 1144, 1071, 1083, 71, 1086, 71, - 71, 1072, 1088, 71, 1087, 71, 1073, 1074, 71, 71, - 1084, 1092, 1089, 1075, 71, 71, 1085, 71, 1091, 1093, + 1033, 3095, 1042, 1045, 1034, 71, 1035, 71, 71, 1048, + 1046, 1036, 1051, 1047, 1049, 71, 1037, 71, 71, 71, + 71, 1050, 71, 1054, 1052, 1057, 71, 71, 71, 1063, + 71, 1056, 1053, 1055, 1064, 71, 1058, 1061, 1065, 71, + 71, 1060, 71, 1066, 1067, 71, 71, 1059, 71, 71, + 71, 71, 1068, 71, 1079, 71, 71, 71, 1078, 71, + 1082, 1069, 1083, 1070, 71, 1071, 71, 1080, 1081, 1085, + 1072, 1104, 1073, 71, 1084, 71, 1088, 71, 1074, 71, + 1090, 71, 1091, 1075, 1076, 1089, 71, 71, 71, 1094, + 1077, 71, 1086, 71, 1087, 71, 1095, 71, 71, 71, - 71, 71, 1090, 71, 71, 1098, 71, 71, 71, 1095, - 1096, 71, 1101, 1099, 1094, 71, 71, 71, 71, 1097, - 71, 71, 71, 71, 71, 1100, 1106, 1108, 1102, 1103, - 1105, 1107, 1110, 71, 71, 71, 1104, 1109, 71, 1111, - 71, 71, 3082, 71, 1113, 71, 71, 1112, 1118, 1115, - 1119, 1120, 71, 1114, 71, 1122, 1117, 1123, 1116, 71, - 71, 1121, 1126, 71, 71, 71, 1128, 1127, 71, 1129, - 71, 71, 1124, 1130, 71, 71, 1125, 1137, 1131, 71, - 71, 71, 1139, 71, 71, 71, 71, 3082, 71, 71, - 1133, 1132, 1135, 1134, 1141, 1136, 71, 1150, 71, 1140, + 71, 1093, 71, 1100, 71, 71, 1092, 1097, 1098, 71, + 1103, 1101, 1096, 1099, 71, 71, 71, 71, 1105, 1102, + 71, 71, 71, 1112, 71, 1108, 1109, 1107, 1110, 71, + 71, 71, 71, 71, 1106, 1114, 71, 1111, 71, 71, + 1113, 71, 71, 1120, 1121, 1117, 1122, 71, 1119, 1125, + 1115, 1116, 71, 1124, 1118, 71, 1123, 71, 1127, 1128, + 71, 71, 71, 1130, 1129, 71, 1131, 71, 71, 71, + 1126, 1132, 71, 71, 1133, 71, 1139, 71, 1141, 71, + 71, 1134, 71, 1135, 71, 1137, 71, 1136, 1138, 71, + 3095, 1143, 1142, 1144, 71, 1140, 71, 1145, 71, 71, - 1142, 1138, 71, 1145, 71, 1143, 71, 71, 71, 1146, - 71, 1148, 1147, 1149, 71, 1154, 1151, 1155, 71, 71, - 1153, 71, 71, 1152, 71, 71, 1159, 1158, 1156, 71, - 71, 71, 71, 71, 71, 1163, 1165, 1166, 1170, 1167, - 1157, 71, 71, 71, 71, 71, 1164, 1160, 71, 1161, - 1168, 1162, 71, 1169, 1173, 71, 71, 1175, 71, 1171, - 71, 1174, 71, 71, 1176, 71, 71, 71, 71, 1180, - 1181, 1177, 1172, 71, 71, 71, 1186, 1187, 1190, 71, - 71, 1178, 71, 71, 1179, 1184, 1183, 71, 71, 71, - 1188, 1194, 1189, 1185, 71, 71, 71, 71, 71, 1191, + 71, 1146, 71, 1147, 1148, 1149, 71, 1151, 1153, 1150, + 71, 1152, 71, 71, 1157, 71, 1154, 1158, 71, 1156, + 71, 71, 71, 71, 1159, 1161, 71, 1162, 1155, 71, + 71, 71, 71, 71, 1166, 71, 1168, 1169, 1170, 1160, + 1171, 1163, 71, 71, 71, 1167, 1173, 71, 1164, 1172, + 1165, 71, 71, 1176, 71, 71, 1178, 71, 71, 71, + 1177, 71, 71, 1179, 71, 1174, 71, 1180, 71, 1183, + 71, 1175, 71, 1184, 71, 1185, 1189, 1190, 71, 1181, + 71, 1182, 71, 71, 1187, 71, 1186, 1193, 71, 71, + 1192, 71, 71, 1188, 1197, 1191, 71, 1194, 71, 71, - 71, 1193, 1192, 1200, 71, 1196, 71, 71, 71, 71, - 1206, 71, 1195, 1204, 71, 71, 1197, 1221, 71, 1199, - 1201, 1203, 1202, 1198, 1205, 1208, 1209, 71, 71, 1211, - 71, 71, 71, 1210, 1207, 1212, 71, 71, 71, 71, - 71, 71, 71, 1215, 71, 71, 71, 71, 71, 71, - 1213, 1214, 1225, 1251, 1216, 71, 1219, 3082, 1222, 1217, - 1227, 1220, 1224, 1223, 71, 1231, 71, 71, 1226, 1228, - 71, 1229, 1232, 1234, 1230, 1233, 71, 71, 71, 71, - 1236, 71, 71, 71, 1235, 71, 71, 1240, 1239, 71, - 1243, 71, 1246, 71, 71, 3082, 71, 1237, 1242, 1238, + 71, 71, 71, 1195, 1196, 1199, 1203, 71, 71, 1198, + 71, 71, 71, 1209, 71, 71, 1204, 1207, 1200, 3095, + 1202, 1211, 1206, 1205, 1208, 1201, 1212, 71, 71, 71, + 71, 1210, 71, 1213, 71, 1215, 1214, 71, 71, 71, + 71, 71, 71, 1216, 1218, 71, 1224, 71, 1221, 71, + 71, 1217, 71, 1219, 71, 71, 71, 1222, 1351, 1220, + 1228, 71, 1234, 1225, 1223, 71, 71, 1227, 1226, 71, + 1230, 1235, 1236, 71, 71, 1229, 1237, 71, 71, 1231, + 1239, 1232, 71, 71, 1233, 71, 71, 71, 1238, 71, + 1243, 71, 1242, 71, 1246, 1249, 71, 1240, 71, 1245, - 1244, 1247, 1241, 71, 71, 71, 71, 71, 1248, 1250, - 1245, 71, 71, 71, 1249, 1252, 71, 71, 71, 71, - 1253, 71, 1254, 1258, 1256, 71, 71, 71, 1257, 1259, - 1255, 1263, 71, 71, 71, 71, 71, 1260, 1268, 1262, - 1261, 1264, 1267, 1270, 71, 71, 71, 1265, 1269, 1274, - 1272, 71, 1266, 71, 1275, 71, 1271, 71, 1273, 71, - 71, 1279, 71, 1288, 71, 1289, 1287, 1277, 71, 71, - 1276, 71, 1278, 71, 1292, 1286, 1290, 1291, 1280, 71, - 71, 1281, 1282, 71, 1293, 71, 1283, 71, 1294, 71, - 1295, 71, 1284, 71, 1297, 71, 1285, 71, 1298, 71, + 1241, 71, 1247, 1250, 71, 1244, 1251, 71, 71, 71, + 71, 1254, 1248, 1253, 71, 71, 71, 71, 1255, 71, + 71, 71, 71, 71, 1252, 1256, 1261, 71, 1259, 1257, + 71, 71, 1260, 1262, 1258, 71, 1266, 71, 1271, 1263, + 71, 1265, 1267, 1264, 71, 71, 1270, 71, 71, 71, + 71, 1268, 71, 1273, 1272, 1269, 1277, 1275, 71, 71, + 1276, 1278, 71, 71, 1280, 71, 1282, 1274, 1279, 71, + 1322, 1281, 71, 1291, 71, 1292, 1289, 1283, 1290, 71, + 1284, 1285, 71, 71, 1295, 1286, 71, 1293, 71, 71, + 71, 1287, 1294, 1296, 1297, 1288, 71, 1298, 71, 1300, - 1299, 71, 71, 71, 1316, 71, 1296, 1300, 1302, 1301, - 1304, 71, 1307, 1308, 71, 1305, 1309, 1303, 71, 71, - 1306, 71, 71, 1311, 71, 1310, 1317, 1318, 1312, 71, - 1313, 71, 1314, 1319, 1315, 1320, 71, 71, 1324, 1321, - 71, 71, 71, 1325, 71, 71, 1323, 1328, 71, 1326, - 71, 71, 71, 71, 1322, 1334, 71, 1330, 71, 1329, - 71, 71, 71, 1327, 71, 1335, 1333, 1337, 1336, 1331, - 1332, 71, 1339, 71, 1341, 71, 1338, 1344, 71, 71, - 1343, 71, 1340, 1346, 71, 71, 71, 1342, 1347, 71, - 1349, 71, 1348, 71, 1345, 1352, 71, 1354, 71, 71, + 71, 71, 71, 1301, 71, 1302, 71, 1299, 71, 71, + 71, 1310, 1311, 1305, 1307, 3095, 71, 71, 71, 71, + 1304, 1303, 1308, 71, 1312, 1314, 1306, 1313, 1309, 71, + 1315, 71, 1316, 1323, 1317, 71, 1318, 71, 1319, 1320, + 1321, 71, 71, 1327, 71, 71, 1324, 71, 1328, 71, + 1326, 71, 1331, 1325, 1329, 71, 71, 71, 71, 71, + 1338, 1337, 71, 71, 1333, 1332, 1330, 71, 71, 71, + 1339, 71, 1336, 1341, 71, 1334, 1335, 1340, 71, 71, + 1343, 1344, 71, 1342, 1348, 71, 71, 1347, 1350, 71, + 71, 71, 71, 1352, 71, 71, 1345, 1353, 1356, 71, - 1350, 71, 1351, 71, 1355, 71, 1356, 1359, 71, 71, - 71, 1353, 71, 1361, 71, 71, 71, 71, 1365, 1363, - 1357, 71, 71, 71, 1364, 1367, 1358, 71, 1369, 1360, - 71, 71, 1362, 71, 3082, 1366, 1368, 71, 1371, 1372, - 71, 1370, 1373, 71, 1375, 1374, 71, 71, 1377, 71, - 71, 1376, 1381, 1378, 1382, 1384, 1379, 71, 71, 71, - 71, 71, 1383, 1380, 71, 71, 1388, 71, 1385, 71, - 71, 71, 1392, 1393, 71, 1395, 1387, 71, 71, 71, - 1394, 71, 71, 1386, 71, 71, 71, 71, 1402, 1389, - 1390, 1396, 71, 71, 1391, 71, 1399, 1397, 71, 1400, + 71, 1349, 71, 1355, 1346, 1358, 71, 71, 1359, 71, + 1354, 1363, 71, 71, 1360, 1357, 71, 71, 71, 1365, + 71, 1361, 71, 1362, 1369, 1367, 71, 1368, 71, 71, + 71, 1371, 71, 1364, 1373, 71, 71, 1366, 71, 71, + 1375, 1377, 71, 1378, 1370, 1372, 1374, 1376, 71, 1379, + 71, 71, 71, 71, 71, 1380, 1385, 1382, 1386, 1383, + 1381, 1388, 71, 71, 71, 71, 1384, 71, 1387, 71, + 1392, 71, 71, 1390, 1389, 71, 71, 1396, 1397, 71, + 1391, 1399, 71, 71, 71, 1398, 71, 71, 71, 71, + 71, 71, 1393, 71, 1406, 1394, 1400, 71, 71, 1395, - 1407, 71, 1398, 1406, 1401, 71, 71, 71, 71, 1411, - 71, 1409, 1403, 1405, 1412, 71, 71, 1414, 1404, 71, - 71, 71, 3082, 71, 1416, 71, 1410, 1415, 1408, 71, - 1420, 1422, 1424, 1421, 1413, 1417, 1418, 1423, 71, 1419, - 71, 71, 1427, 71, 1425, 71, 71, 1428, 71, 71, - 71, 71, 1426, 71, 1432, 1433, 71, 71, 1435, 71, - 71, 71, 1429, 71, 1431, 71, 1440, 1441, 71, 1434, - 71, 1430, 71, 1437, 1444, 1438, 1436, 71, 1439, 1442, - 71, 71, 1445, 71, 71, 71, 71, 1443, 71, 71, - 1451, 1446, 1448, 1452, 1453, 1447, 71, 71, 1449, 71, + 1403, 71, 1401, 1404, 71, 71, 1402, 71, 1405, 1410, + 1413, 1407, 1411, 71, 1415, 71, 1409, 71, 71, 1416, + 71, 71, 1408, 71, 1412, 1419, 1414, 1418, 71, 71, + 71, 71, 1426, 1417, 1424, 1420, 1428, 1425, 1421, 71, + 71, 71, 71, 1422, 1429, 1427, 1423, 1431, 71, 71, + 1430, 71, 1432, 71, 71, 71, 1436, 71, 71, 1437, + 1433, 71, 1439, 71, 71, 71, 1444, 1435, 71, 71, + 71, 1448, 1445, 1438, 1434, 1441, 71, 71, 1440, 71, + 71, 1442, 1443, 71, 71, 71, 71, 1446, 1449, 1447, + 71, 1455, 71, 71, 1451, 71, 71, 1456, 1450, 1452, - 1456, 71, 71, 1450, 71, 1455, 1454, 1458, 1461, 1460, - 1462, 71, 1457, 71, 71, 1466, 71, 71, 1463, 71, - 1464, 1465, 71, 1459, 71, 71, 71, 71, 71, 1472, - 71, 1468, 71, 1467, 1471, 71, 71, 71, 1478, 1469, - 1474, 1470, 1475, 1479, 71, 71, 1480, 71, 1483, 1476, - 1473, 1481, 71, 71, 71, 1477, 71, 71, 71, 71, - 71, 1487, 1491, 71, 71, 1482, 1486, 71, 71, 1492, - 1494, 71, 1484, 1485, 71, 1497, 71, 1488, 1490, 1489, - 1496, 71, 71, 71, 71, 71, 1495, 71, 71, 1493, - 1498, 71, 71, 1505, 71, 1508, 71, 1506, 71, 1502, + 1453, 1457, 1454, 71, 1459, 71, 1460, 71, 1461, 1462, + 1458, 71, 1465, 1466, 71, 1467, 1464, 71, 71, 71, + 71, 1468, 1469, 71, 71, 71, 1471, 71, 1463, 1470, + 71, 71, 71, 1476, 71, 71, 71, 71, 1475, 71, + 71, 1473, 1472, 1478, 1479, 1474, 1482, 71, 1487, 71, + 1480, 1483, 71, 1484, 1477, 71, 1481, 71, 1485, 71, + 1486, 71, 71, 71, 71, 1495, 1490, 1491, 1488, 71, + 71, 71, 1498, 71, 1489, 1496, 71, 71, 71, 71, + 1492, 1501, 1494, 1493, 71, 1500, 71, 71, 71, 71, + 1506, 71, 1499, 71, 1509, 1497, 1502, 71, 3095, 71, - 1507, 1499, 1500, 1501, 1509, 71, 1504, 71, 1503, 71, - 71, 1512, 1510, 1511, 71, 71, 71, 1515, 71, 1513, - 71, 1516, 71, 71, 71, 1519, 1525, 1514, 1523, 71, - 71, 1520, 71, 71, 1517, 1524, 1518, 1527, 71, 1522, - 71, 71, 1521, 1528, 1529, 1530, 71, 71, 1526, 71, - 1534, 1535, 71, 71, 71, 71, 71, 71, 1539, 71, - 1538, 1540, 1542, 71, 71, 1532, 1531, 71, 71, 1533, - 71, 1536, 71, 1543, 71, 1537, 1544, 71, 71, 1541, - 1545, 1547, 71, 1549, 1546, 71, 1550, 71, 71, 71, - 71, 71, 1548, 71, 1554, 71, 1556, 1551, 71, 71, + 1510, 1512, 71, 1503, 71, 1504, 1508, 1505, 1513, 71, + 1507, 1511, 71, 71, 71, 71, 71, 1514, 1515, 71, + 71, 1519, 1522, 71, 1517, 1520, 1516, 71, 1523, 1518, + 71, 1527, 71, 71, 71, 1524, 1529, 71, 1521, 1528, + 71, 71, 71, 71, 71, 1532, 1526, 1525, 1530, 71, + 1531, 71, 1537, 1533, 71, 1534, 71, 1539, 1540, 71, + 71, 1535, 1536, 71, 71, 71, 1544, 1545, 71, 1543, + 1547, 71, 71, 71, 1538, 1548, 71, 1542, 1541, 1549, + 71, 71, 71, 71, 71, 1552, 71, 1555, 1546, 71, + 71, 71, 1550, 1554, 71, 71, 71, 1551, 71, 1559, - 1557, 71, 1561, 71, 1555, 71, 71, 1553, 1552, 71, - 71, 1558, 71, 1559, 1564, 1566, 71, 1562, 71, 71, - 1569, 1565, 1567, 1563, 1560, 71, 71, 71, 71, 71, - 1568, 1572, 71, 1574, 1570, 71, 1571, 1575, 71, 71, - 71, 71, 1582, 71, 71, 1573, 1577, 1576, 1583, 71, - 71, 71, 71, 1580, 1578, 1579, 1587, 71, 71, 1586, - 1589, 1591, 1590, 71, 1584, 1581, 71, 71, 1593, 1585, - 1595, 71, 1588, 71, 71, 71, 71, 71, 71, 1600, - 1594, 1597, 1598, 1592, 71, 1601, 71, 71, 71, 71, - 71, 1612, 1596, 1605, 71, 1606, 71, 71, 71, 71, + 71, 1561, 71, 1553, 1556, 1562, 71, 71, 1566, 1560, + 1558, 1557, 71, 71, 71, 71, 1563, 1564, 1569, 1571, + 71, 71, 71, 71, 1574, 1572, 1567, 71, 71, 71, + 1570, 1565, 1568, 1577, 71, 71, 1580, 71, 71, 1576, + 1579, 71, 1573, 71, 71, 71, 71, 1587, 71, 1575, + 71, 71, 71, 1578, 71, 1582, 1581, 1588, 1585, 1591, + 71, 71, 1583, 1584, 71, 1592, 1594, 71, 1589, 1596, + 1586, 1590, 1595, 1598, 1593, 71, 71, 1600, 71, 71, + 71, 1597, 71, 71, 71, 71, 1605, 71, 1602, 1603, + 1599, 71, 1606, 71, 71, 71, 71, 1611, 1610, 1601, - 1599, 1602, 1609, 1604, 1603, 1610, 71, 71, 1607, 1608, - 1614, 1613, 71, 71, 1620, 71, 71, 1611, 1617, 1619, - 71, 1616, 1621, 1618, 71, 1622, 1615, 1625, 71, 71, - 1623, 71, 1624, 71, 71, 71, 71, 1627, 71, 1626, - 71, 1632, 1633, 1631, 71, 1635, 71, 71, 71, 1634, - 71, 71, 71, 1628, 71, 1629, 71, 1637, 1630, 1638, - 71, 1639, 71, 71, 71, 1647, 71, 71, 1640, 1636, - 71, 71, 71, 71, 1641, 71, 71, 1643, 1644, 1645, - 1652, 71, 1642, 1646, 71, 71, 1648, 1650, 71, 1655, - 1654, 1656, 1649, 71, 71, 71, 1651, 71, 71, 71, + 71, 1607, 71, 71, 71, 71, 1624, 1604, 1617, 1609, + 71, 1608, 1612, 1614, 71, 71, 1615, 71, 71, 71, + 1618, 1619, 1613, 1633, 1622, 71, 1621, 1626, 1616, 1623, + 1625, 71, 1630, 71, 71, 71, 1628, 1620, 71, 1627, + 71, 1629, 71, 71, 1634, 71, 71, 1631, 1637, 1636, + 71, 1638, 1640, 71, 71, 1639, 1632, 71, 71, 71, + 1643, 71, 71, 71, 1642, 1635, 71, 1644, 71, 71, + 71, 1652, 71, 71, 71, 71, 1641, 71, 71, 71, + 71, 1645, 71, 1648, 1649, 1650, 1646, 1651, 1647, 1657, + 71, 71, 1653, 1655, 71, 1654, 1659, 71, 1660, 1656, - 71, 71, 71, 71, 1653, 1662, 1660, 1657, 71, 1663, - 1670, 71, 1664, 1659, 1661, 1672, 71, 1665, 1658, 1669, - 1671, 71, 71, 1666, 1675, 71, 71, 1668, 1667, 1674, - 71, 71, 71, 71, 71, 71, 71, 1678, 1679, 71, - 1673, 71, 1687, 1676, 71, 1682, 71, 71, 71, 71, - 1677, 1681, 71, 1680, 1690, 1686, 1684, 71, 1683, 1685, - 1688, 71, 71, 71, 1689, 71, 1692, 1691, 71, 1697, - 71, 71, 71, 1693, 1694, 71, 1701, 1700, 71, 71, - 1699, 71, 71, 1696, 1705, 71, 1698, 1709, 1695, 71, - 1702, 1703, 1710, 71, 1704, 71, 1706, 71, 71, 3082, + 1658, 71, 71, 71, 71, 71, 1663, 71, 71, 1661, + 71, 3095, 1665, 71, 1667, 1662, 1675, 71, 71, 1666, + 1664, 1670, 1668, 1671, 71, 1669, 71, 1674, 1672, 1676, + 71, 71, 1680, 71, 1679, 1673, 1678, 71, 1677, 71, + 71, 71, 71, 71, 71, 1683, 1684, 71, 71, 1692, + 1681, 1693, 71, 1687, 71, 71, 71, 1689, 1682, 1686, + 1690, 1685, 71, 1691, 71, 71, 1688, 71, 71, 71, + 71, 71, 1702, 71, 71, 1695, 1694, 71, 1760, 1697, + 1699, 71, 1696, 1698, 71, 71, 1704, 71, 1701, 1703, + 1705, 71, 1706, 1708, 1700, 71, 1709, 71, 1714, 1711, - 71, 1715, 1707, 1708, 1712, 1714, 1718, 71, 71, 1711, - 1717, 71, 71, 1719, 1720, 71, 1716, 71, 71, 1713, - 71, 1721, 1724, 71, 71, 1728, 71, 1726, 71, 71, - 71, 71, 1723, 1727, 1729, 71, 1725, 1722, 71, 71, - 71, 71, 71, 1732, 1738, 71, 71, 1733, 1730, 1731, - 71, 1740, 1734, 1735, 1741, 1736, 1737, 71, 71, 1742, - 71, 1743, 71, 71, 71, 1748, 1739, 71, 71, 71, - 1744, 71, 1752, 71, 71, 71, 1745, 1747, 71, 1754, - 71, 71, 1746, 1755, 1750, 1756, 1757, 1751, 71, 1749, - 71, 71, 1761, 71, 1753, 71, 71, 1758, 71, 1765, + 1710, 71, 71, 1715, 71, 71, 1707, 71, 1712, 71, + 71, 1720, 1719, 1722, 71, 1713, 1716, 71, 1723, 71, + 1717, 71, 1726, 1718, 71, 71, 1724, 1721, 71, 71, + 1728, 1727, 1730, 1725, 71, 1734, 71, 71, 71, 1732, + 71, 71, 71, 1729, 71, 1733, 71, 1731, 1735, 71, + 71, 71, 1738, 71, 1746, 1739, 1736, 1744, 71, 71, + 71, 1737, 1740, 1741, 1747, 1742, 71, 1743, 1749, 71, + 71, 71, 1748, 71, 71, 1754, 71, 71, 71, 1745, + 71, 71, 1758, 71, 71, 71, 1750, 1753, 71, 1751, + 1761, 71, 1752, 1756, 71, 71, 1757, 71, 1755, 1762, - 71, 71, 71, 71, 71, 71, 1760, 71, 1763, 1767, - 71, 71, 1772, 1759, 1762, 1766, 1768, 1764, 71, 1769, - 71, 71, 1770, 1773, 1777, 1771, 1775, 71, 1774, 1776, - 71, 1778, 71, 71, 1781, 71, 1780, 71, 1779, 1784, - 71, 1782, 71, 71, 71, 71, 1785, 1783, 71, 71, - 71, 71, 71, 71, 1790, 71, 71, 1794, 71, 71, - 1791, 3082, 71, 1800, 1786, 1792, 1788, 1787, 1789, 71, - 1793, 1795, 71, 1803, 1798, 71, 1797, 1802, 71, 71, - 1804, 1799, 71, 71, 1796, 71, 71, 1801, 1808, 71, - 1811, 1812, 71, 71, 1805, 1813, 71, 71, 1806, 1809, + 1759, 71, 1763, 1766, 1764, 1767, 71, 1765, 71, 71, + 1768, 1771, 71, 1769, 71, 71, 71, 71, 71, 1778, + 71, 1773, 71, 1772, 71, 71, 71, 1770, 1774, 1775, + 1781, 1785, 1779, 71, 1776, 1782, 71, 71, 1777, 71, + 1780, 1787, 1783, 1784, 71, 1789, 1786, 71, 1788, 71, + 71, 71, 1790, 71, 1791, 71, 71, 71, 71, 71, + 71, 71, 71, 1796, 71, 71, 71, 1800, 1797, 71, + 1806, 71, 1798, 1792, 1794, 1795, 1799, 1793, 1801, 71, + 71, 1807, 1808, 71, 1803, 1804, 71, 1809, 71, 71, + 1811, 1802, 1805, 71, 71, 71, 1814, 71, 1817, 71, - 71, 1810, 71, 1807, 1815, 71, 71, 1816, 1819, 71, - 71, 1821, 71, 1814, 1820, 1822, 1823, 71, 1817, 1825, - 1824, 1818, 71, 71, 71, 71, 1830, 1827, 1828, 71, - 71, 1829, 71, 71, 71, 71, 1837, 71, 1839, 71, - 71, 71, 71, 1840, 71, 1831, 1832, 1833, 1826, 71, - 71, 1842, 1834, 1841, 1835, 1836, 1844, 1838, 1845, 71, - 1847, 1843, 71, 71, 71, 1849, 71, 71, 1846, 71, - 1851, 71, 71, 1854, 1855, 71, 71, 1857, 71, 71, - 71, 71, 71, 1848, 1863, 71, 1862, 1852, 71, 1850, - 1859, 1860, 71, 1853, 71, 71, 1856, 71, 71, 71, + 1810, 71, 1812, 1815, 3095, 1816, 1818, 71, 1813, 1819, + 71, 1821, 71, 71, 1822, 1820, 1825, 71, 1827, 71, + 1823, 1829, 1824, 1826, 71, 71, 71, 71, 1828, 1831, + 71, 71, 1834, 71, 1833, 71, 71, 1835, 71, 1836, + 71, 71, 1843, 71, 1830, 71, 71, 71, 71, 1848, + 1837, 1838, 1839, 1845, 71, 1832, 71, 1840, 1846, 71, + 1841, 1842, 71, 1844, 1851, 71, 1853, 1849, 1847, 71, + 71, 1855, 71, 71, 1852, 71, 1857, 1850, 71, 71, + 71, 1860, 1861, 71, 71, 1863, 71, 71, 71, 71, + 1854, 71, 1869, 71, 71, 71, 1868, 1865, 1858, 1856, - 1869, 1861, 71, 1867, 1858, 1866, 71, 71, 1873, 1864, - 1865, 71, 1872, 71, 71, 1876, 1878, 71, 1877, 71, - 1875, 71, 1871, 1868, 71, 71, 71, 71, 1870, 71, - 1879, 1874, 71, 71, 71, 1880, 1884, 71, 1887, 1881, - 71, 1883, 1888, 1889, 71, 71, 1882, 71, 71, 71, - 1885, 1892, 71, 71, 71, 1891, 1897, 71, 1896, 71, - 1886, 71, 71, 71, 1890, 1894, 1901, 1893, 71, 1902, - 1904, 71, 71, 1898, 1895, 71, 1899, 1903, 1900, 1905, - 1908, 71, 71, 1906, 71, 71, 71, 71, 1907, 71, - 1915, 1912, 71, 71, 1918, 71, 71, 1917, 1910, 71, + 1866, 1859, 71, 71, 1862, 71, 71, 71, 1875, 71, + 1867, 71, 1864, 1872, 1873, 1870, 71, 71, 1871, 1879, + 1882, 1874, 1878, 71, 71, 71, 71, 1877, 1883, 1885, + 1881, 1884, 71, 71, 71, 1876, 1880, 71, 71, 71, + 71, 71, 1886, 1890, 71, 71, 1893, 1894, 1895, 71, + 1889, 71, 71, 71, 71, 71, 1898, 1887, 1888, 1891, + 71, 71, 71, 1903, 71, 71, 1897, 1902, 71, 1896, + 1892, 3095, 1899, 71, 71, 1900, 71, 1907, 71, 1908, + 1904, 71, 1901, 1905, 1906, 1910, 71, 1909, 1911, 71, + 1912, 71, 1915, 71, 71, 1916, 71, 71, 71, 71, - 1919, 71, 71, 1909, 1911, 1920, 71, 1913, 1916, 1914, - 71, 1921, 1925, 71, 1926, 71, 71, 1922, 1927, 1929, - 1930, 71, 1923, 1928, 71, 71, 71, 71, 1934, 71, - 1924, 71, 1932, 1933, 71, 1936, 71, 71, 1939, 71, - 1941, 1935, 1931, 71, 71, 71, 71, 71, 1937, 71, - 71, 71, 1947, 1946, 1945, 1942, 71, 1943, 1948, 71, - 3082, 1940, 1938, 1949, 71, 1951, 1944, 71, 71, 71, - 71, 71, 71, 1952, 1953, 1956, 1950, 1955, 1954, 71, - 71, 71, 1957, 71, 1959, 71, 71, 1963, 71, 71, - 71, 1962, 1958, 1960, 71, 1965, 71, 1961, 1964, 1966, + 1922, 71, 1913, 1919, 71, 71, 71, 1914, 1917, 1924, + 1925, 71, 71, 1926, 71, 1918, 1923, 1920, 1927, 1921, + 71, 71, 1932, 71, 1936, 1931, 1933, 71, 1934, 1928, + 71, 71, 1929, 1935, 71, 1937, 71, 1930, 71, 1941, + 71, 71, 71, 1939, 71, 71, 1943, 71, 1940, 1946, + 71, 71, 1942, 1948, 71, 71, 1944, 1938, 71, 71, + 71, 71, 1949, 71, 1953, 1952, 1950, 71, 1954, 1955, + 71, 3095, 1945, 1947, 1956, 71, 1958, 1951, 71, 71, + 71, 71, 71, 1957, 1959, 1960, 71, 1961, 1962, 71, + 71, 1963, 1964, 71, 1966, 71, 71, 71, 71, 1970, - 1967, 71, 71, 71, 71, 71, 71, 71, 1974, 1972, - 71, 1969, 1973, 71, 71, 71, 1968, 71, 71, 1976, - 71, 1970, 71, 1971, 1975, 71, 1979, 1982, 3082, 1978, - 71, 1977, 71, 1983, 1985, 1981, 71, 1980, 71, 1984, - 71, 1986, 71, 1987, 1989, 71, 71, 71, 71, 1988, - 1990, 1995, 71, 71, 1997, 71, 1991, 71, 1992, 1999, - 71, 1993, 1994, 71, 71, 1998, 71, 71, 2003, 1996, - 71, 71, 2000, 2001, 71, 2002, 71, 71, 71, 2004, - 71, 71, 71, 71, 71, 71, 2006, 2011, 2007, 2008, - 2015, 71, 2005, 71, 71, 2010, 2014, 2018, 2019, 71, + 71, 71, 1965, 1969, 71, 71, 1971, 1967, 1968, 1972, + 1973, 1974, 71, 71, 71, 71, 71, 71, 71, 1981, + 1979, 1975, 1976, 1980, 71, 71, 71, 71, 71, 1986, + 71, 71, 1977, 1983, 1978, 1982, 71, 71, 1990, 71, + 1987, 1985, 71, 1992, 1984, 1989, 71, 71, 1988, 1996, + 71, 1991, 1994, 71, 71, 71, 1997, 71, 2002, 1995, + 1993, 71, 71, 71, 71, 71, 2004, 71, 71, 2005, + 1998, 1999, 2000, 2006, 71, 2001, 2007, 71, 71, 2003, + 71, 2010, 71, 2009, 2008, 71, 71, 2011, 71, 71, + 71, 71, 71, 71, 2022, 71, 71, 2013, 2014, 2018, - 2012, 2016, 2013, 71, 2009, 2017, 71, 71, 2021, 2022, - 71, 71, 71, 71, 71, 2024, 71, 71, 2025, 2020, - 71, 2026, 2030, 2028, 2023, 71, 71, 2032, 2029, 2034, - 71, 2027, 71, 71, 71, 71, 2031, 2037, 2036, 2038, - 2033, 71, 71, 71, 2042, 71, 2039, 71, 71, 71, - 71, 71, 2043, 2045, 2048, 71, 71, 2049, 2035, 71, - 2040, 2044, 71, 2041, 2052, 2047, 71, 71, 2046, 2054, - 71, 2053, 71, 71, 2050, 2058, 71, 71, 2060, 71, - 71, 2056, 2051, 71, 2061, 71, 71, 71, 71, 2057, - 2055, 2059, 2063, 71, 2062, 2067, 2069, 2065, 2064, 71, + 2015, 71, 71, 2012, 2021, 2017, 71, 2026, 71, 2025, + 3095, 2020, 2019, 71, 2023, 2016, 71, 71, 2028, 2029, + 71, 2024, 71, 71, 71, 2031, 71, 71, 2027, 2032, + 71, 71, 2033, 2037, 2030, 2035, 71, 71, 2039, 2036, + 2041, 71, 2034, 71, 71, 71, 2044, 71, 71, 2038, + 2043, 2040, 2045, 2046, 71, 71, 2049, 71, 71, 71, + 71, 71, 71, 2050, 71, 2055, 71, 2052, 71, 2042, + 2051, 2059, 2047, 71, 2056, 2048, 2057, 71, 2054, 2053, + 71, 71, 71, 2061, 71, 2060, 71, 71, 2058, 2065, + 71, 71, 2067, 71, 2063, 71, 2066, 71, 2068, 71, - 2066, 2070, 71, 71, 71, 71, 71, 2068, 2071, 71, - 2074, 2075, 71, 71, 71, 2072, 2073, 2079, 71, 71, - 71, 71, 2076, 2078, 71, 71, 71, 71, 71, 71, - 71, 2080, 2077, 71, 2088, 2083, 2082, 2081, 2085, 2084, - 2086, 71, 2090, 71, 71, 2087, 2089, 71, 71, 2091, - 2093, 71, 2097, 2094, 2099, 71, 71, 71, 2101, 71, - 2098, 71, 2092, 2095, 71, 2096, 2100, 71, 2103, 3082, - 71, 2106, 2104, 2108, 2105, 2102, 2107, 71, 2109, 71, - 71, 71, 71, 2110, 71, 2113, 71, 71, 2114, 2111, - 2112, 2117, 2118, 71, 71, 2119, 71, 71, 2122, 71, + 2062, 71, 2064, 71, 2069, 2071, 2070, 71, 2072, 2074, + 2076, 2073, 71, 71, 2075, 2077, 71, 71, 71, 71, + 71, 71, 2079, 2085, 2078, 2082, 2083, 71, 71, 2080, + 2081, 71, 2084, 2087, 71, 71, 2086, 71, 71, 71, + 71, 71, 71, 71, 71, 2096, 2088, 2097, 71, 2089, + 71, 2090, 2091, 2093, 2092, 2094, 71, 2095, 71, 2098, + 71, 71, 2099, 2103, 2101, 71, 71, 2102, 2107, 71, + 71, 2109, 71, 71, 2106, 2100, 71, 2111, 2104, 2108, + 71, 2112, 2114, 2116, 2117, 2110, 2105, 2115, 71, 71, + 71, 71, 71, 2113, 2118, 71, 2121, 71, 71, 2122, - 71, 71, 2115, 2128, 71, 2123, 71, 2124, 2120, 2125, - 71, 71, 2127, 2116, 71, 2121, 2126, 71, 71, 71, - 71, 2129, 2132, 2130, 71, 71, 71, 71, 71, 2135, - 71, 71, 71, 2139, 2141, 71, 2142, 71, 71, 2131, - 2134, 71, 71, 2133, 2136, 71, 2137, 2138, 71, 71, - 2144, 71, 2143, 2140, 2146, 71, 2148, 2151, 71, 71, - 2147, 2149, 71, 2152, 2145, 71, 71, 2150, 71, 71, - 71, 71, 71, 2162, 71, 71, 71, 71, 2153, 2163, - 71, 2154, 71, 2159, 2161, 71, 2200, 2157, 2155, 2165, - 2156, 2158, 2170, 2160, 71, 2164, 71, 2167, 2166, 2168, + 2119, 71, 2126, 71, 71, 2127, 71, 71, 2130, 71, + 2125, 71, 71, 2123, 71, 2120, 2131, 2134, 2128, 71, + 2132, 2133, 71, 2135, 2124, 2129, 71, 71, 71, 71, + 2136, 71, 2138, 71, 2139, 71, 2140, 71, 71, 71, + 71, 71, 2143, 71, 2149, 71, 2147, 2137, 71, 71, + 2142, 71, 2150, 71, 2145, 71, 2141, 2144, 2152, 71, + 2146, 71, 71, 71, 2151, 2148, 2156, 2154, 2159, 71, + 71, 71, 71, 71, 71, 2157, 71, 2153, 2155, 2160, + 71, 2158, 71, 71, 71, 2170, 71, 71, 71, 2161, + 2171, 2162, 71, 71, 2167, 2165, 2163, 3095, 2164, 2169, - 71, 2169, 71, 71, 2172, 71, 71, 2171, 2175, 71, - 71, 2176, 71, 71, 2173, 2177, 71, 2174, 2181, 71, - 2182, 71, 71, 2184, 71, 71, 2186, 71, 2180, 71, - 71, 71, 2178, 2179, 71, 2188, 2189, 71, 2190, 71, - 71, 2183, 71, 2185, 2187, 2191, 71, 71, 2193, 2192, - 71, 2195, 2196, 71, 2198, 71, 71, 71, 2202, 2201, - 71, 2194, 2204, 71, 71, 71, 2197, 71, 2199, 2208, - 71, 71, 71, 2203, 71, 71, 2212, 2213, 71, 2205, - 2206, 71, 71, 2207, 71, 71, 71, 2209, 71, 2211, - 2215, 2218, 71, 2220, 2210, 2219, 71, 2216, 71, 2217, + 71, 2166, 2173, 71, 2168, 2172, 2174, 71, 2175, 2176, + 71, 2177, 71, 71, 2180, 2178, 2179, 71, 2183, 71, + 71, 71, 71, 71, 71, 2184, 2181, 2185, 71, 2182, + 2189, 71, 2190, 71, 2192, 71, 2188, 71, 2194, 71, + 71, 2186, 71, 2187, 71, 2196, 71, 2191, 2197, 71, + 2198, 71, 71, 71, 71, 2193, 71, 2195, 2199, 2203, + 2201, 2200, 2204, 71, 2206, 71, 71, 71, 71, 71, + 2210, 2209, 2202, 2208, 71, 2205, 2212, 71, 71, 71, + 2216, 71, 71, 71, 2207, 2211, 71, 71, 2221, 71, + 71, 2220, 71, 2213, 2214, 71, 71, 2215, 2226, 71, - 2214, 71, 2221, 71, 2225, 71, 71, 2227, 71, 71, - 71, 2228, 71, 71, 2222, 2226, 2223, 2232, 2233, 71, - 71, 2231, 71, 71, 71, 71, 2229, 2224, 2230, 2237, - 2239, 71, 2235, 2242, 71, 2234, 2240, 2244, 2241, 71, - 71, 2236, 71, 71, 71, 2245, 71, 2246, 2238, 71, - 71, 71, 2249, 71, 71, 2243, 71, 71, 3082, 2248, - 2250, 2255, 2251, 2252, 2254, 2253, 2256, 71, 71, 2247, - 71, 71, 71, 2261, 2257, 71, 2260, 2258, 71, 71, - 2259, 71, 2262, 71, 2266, 2268, 71, 71, 71, 71, - 2263, 71, 71, 71, 71, 2279, 71, 2270, 2264, 2267, + 2223, 2219, 2217, 71, 71, 71, 2218, 2224, 71, 2222, + 71, 2225, 2228, 71, 71, 2233, 71, 71, 2229, 2235, + 71, 71, 71, 2227, 71, 2234, 2230, 2236, 2231, 2239, + 71, 71, 2240, 71, 71, 71, 2241, 71, 2242, 2232, + 71, 71, 2237, 2244, 2238, 2246, 2243, 71, 2247, 71, + 71, 2251, 2248, 2253, 2249, 2245, 2250, 71, 2252, 71, + 71, 71, 71, 71, 71, 2254, 2255, 2258, 71, 71, + 71, 2259, 71, 71, 2264, 2256, 2257, 2260, 2261, 2262, + 71, 2265, 71, 71, 71, 71, 2263, 71, 2266, 71, + 2269, 2268, 2270, 2267, 71, 2271, 71, 71, 71, 2275, - 2265, 2271, 2269, 71, 2274, 71, 2275, 2272, 2273, 71, - 2276, 71, 2280, 71, 2277, 2281, 71, 71, 2283, 2284, - 2282, 2278, 2285, 2286, 71, 71, 71, 71, 71, 71, - 2288, 71, 71, 71, 2292, 2293, 71, 71, 71, 2289, - 2287, 71, 2295, 71, 3082, 2290, 71, 2296, 71, 2297, - 2294, 2291, 2298, 71, 71, 71, 71, 2300, 2301, 2299, - 2302, 2303, 71, 71, 71, 71, 71, 71, 2304, 2305, - 71, 2309, 71, 2312, 71, 71, 71, 2311, 71, 71, - 2308, 2313, 71, 2306, 2318, 2307, 71, 2316, 2319, 2317, - 2310, 71, 2314, 71, 2315, 71, 71, 2321, 71, 71, + 2277, 71, 71, 2272, 71, 2273, 2279, 2274, 71, 71, + 71, 71, 2276, 71, 2284, 71, 2280, 2278, 2285, 71, + 3095, 2283, 2288, 71, 2281, 2282, 71, 2289, 2290, 71, + 71, 2287, 71, 2291, 2293, 2286, 2294, 2292, 2295, 71, + 71, 71, 71, 71, 2297, 71, 71, 71, 71, 2301, + 2302, 71, 71, 71, 3095, 2296, 71, 2298, 2304, 71, + 2299, 71, 71, 2305, 2306, 2303, 2300, 2307, 71, 71, + 71, 2309, 2310, 71, 2308, 2312, 71, 2311, 71, 71, + 71, 71, 71, 2313, 2314, 71, 2318, 71, 2321, 71, + 71, 71, 2320, 71, 71, 2317, 2322, 71, 2315, 2327, - 2324, 2322, 71, 2326, 71, 2320, 2325, 2328, 71, 71, - 71, 71, 2330, 71, 71, 71, 2327, 71, 71, 2323, - 2329, 71, 2334, 2338, 71, 2340, 2336, 71, 2331, 2332, - 2333, 71, 2337, 2339, 71, 71, 2341, 71, 71, 71, - 71, 71, 71, 2349, 2335, 2344, 2347, 71, 71, 71, - 2348, 71, 71, 2342, 2346, 2352, 71, 71, 2345, 71, - 2343, 71, 2353, 71, 2356, 71, 2350, 2351, 2357, 71, - 2354, 71, 71, 71, 2360, 2355, 2358, 2361, 71, 2359, - 2362, 71, 71, 71, 71, 71, 3082, 2363, 2366, 71, - 2368, 2369, 71, 71, 2365, 2364, 2370, 71, 2371, 71, + 2316, 71, 2325, 2328, 2326, 2319, 71, 2323, 71, 2324, + 71, 71, 2330, 71, 71, 2333, 2331, 71, 2335, 71, + 2329, 2334, 2337, 71, 71, 71, 71, 2339, 71, 71, + 71, 2336, 71, 71, 2332, 2338, 71, 2343, 2347, 71, + 2349, 2345, 71, 2340, 2341, 2342, 71, 2346, 2348, 71, + 71, 2350, 71, 71, 71, 71, 71, 71, 2358, 2344, + 2353, 2356, 71, 71, 71, 2357, 71, 71, 2351, 2355, + 2361, 71, 71, 2354, 71, 2352, 71, 2362, 71, 2365, + 71, 2359, 2360, 2366, 71, 2363, 71, 71, 71, 2369, + 2364, 2367, 2370, 71, 2368, 2371, 71, 71, 71, 71, - 2372, 71, 71, 71, 2367, 2373, 71, 2374, 2375, 71, - 2376, 71, 2377, 71, 2378, 71, 2382, 71, 2379, 71, - 2384, 71, 2385, 71, 71, 71, 71, 71, 71, 71, - 71, 2381, 71, 2380, 2388, 2386, 71, 2387, 2383, 71, - 2389, 2391, 2394, 71, 71, 71, 2390, 71, 2395, 2392, - 2393, 71, 71, 2401, 71, 71, 71, 71, 2396, 71, - 2398, 71, 71, 2402, 2397, 2400, 71, 2410, 3082, 2399, - 2403, 2404, 71, 71, 71, 2405, 2408, 2411, 2412, 71, - 2409, 2406, 2413, 71, 2407, 71, 2414, 71, 2415, 71, - 2416, 71, 2417, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 2372, 2375, 2379, 71, 2378, 2380, 71, 2374, + 2373, 2381, 71, 2382, 71, 71, 71, 71, 71, 2376, + 2377, 71, 2385, 71, 2386, 71, 2387, 2383, 71, 71, + 2388, 2392, 71, 2389, 2384, 71, 2394, 71, 2395, 71, + 71, 71, 71, 71, 71, 2391, 71, 71, 2390, 2398, + 71, 2396, 2401, 2397, 2393, 2399, 2404, 71, 71, 71, + 71, 71, 71, 71, 2400, 71, 2402, 2405, 71, 2411, + 2403, 71, 71, 71, 2408, 71, 71, 2410, 71, 71, + 2407, 2412, 2418, 2415, 71, 2406, 2409, 3095, 2413, 2420, + 2414, 71, 2419, 2416, 2422, 71, 2421, 2423, 71, 2417, - 71, 71, 2418, 2426, 71, 71, 71, 2424, 71, 2430, - 2431, 71, 2419, 2421, 2420, 71, 71, 2423, 2422, 2425, - 2427, 71, 2428, 2429, 2433, 2434, 71, 71, 2432, 71, - 2435, 2436, 71, 71, 2437, 71, 2439, 71, 71, 71, - 2445, 71, 2446, 71, 2447, 2438, 71, 71, 2440, 71, - 71, 71, 71, 2441, 2443, 2442, 2451, 71, 2444, 71, - 71, 2455, 2449, 71, 2448, 2454, 2456, 71, 2450, 71, - 71, 2457, 2452, 2458, 71, 71, 71, 2453, 71, 2460, - 71, 71, 2459, 71, 71, 2464, 71, 71, 2462, 2468, - 2469, 71, 71, 71, 2461, 2472, 71, 2473, 2463, 71, + 71, 2424, 71, 2425, 71, 2426, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 2436, 2428, 71, + 71, 71, 2434, 3095, 2427, 71, 2440, 2429, 2431, 2430, + 2441, 71, 2433, 2432, 2435, 71, 2437, 2438, 2439, 2444, + 71, 71, 71, 2442, 2443, 2446, 71, 71, 71, 71, + 2445, 71, 71, 2457, 71, 2449, 71, 2455, 71, 71, + 2447, 2456, 71, 71, 2450, 2448, 71, 71, 71, 2451, + 2452, 71, 2453, 2454, 71, 71, 2461, 71, 71, 2465, + 2464, 2458, 2459, 2466, 71, 2460, 71, 71, 2462, 2467, + 2468, 71, 71, 71, 2463, 2470, 71, 2469, 71, 71, - 71, 2465, 2466, 71, 2467, 2471, 71, 2470, 2476, 71, - 2475, 71, 71, 2477, 2474, 2481, 71, 71, 2478, 71, - 71, 2485, 71, 71, 2484, 2487, 71, 71, 2483, 2482, - 71, 2479, 2480, 71, 71, 2488, 2489, 2492, 71, 71, - 2493, 71, 2486, 2495, 71, 71, 2491, 71, 71, 2490, - 71, 2500, 71, 71, 2502, 71, 71, 2498, 2496, 2499, - 2497, 2503, 71, 2494, 71, 71, 71, 2504, 2501, 71, - 2506, 71, 71, 71, 2507, 71, 71, 71, 2505, 71, - 2509, 2510, 2512, 2517, 2513, 2515, 71, 2511, 2508, 71, - 2514, 2516, 71, 71, 2518, 71, 2521, 71, 71, 71, + 71, 71, 71, 2474, 71, 2472, 71, 2478, 2479, 71, + 71, 2471, 2482, 71, 2483, 2480, 2473, 71, 71, 2475, + 2476, 71, 2477, 71, 2481, 2485, 2486, 71, 71, 71, + 71, 2487, 2484, 2491, 71, 71, 71, 71, 2488, 71, + 2494, 71, 2492, 71, 2493, 2495, 71, 71, 2489, 2490, + 2497, 71, 2498, 71, 71, 2500, 2496, 2503, 71, 71, + 2504, 2502, 2499, 2506, 71, 2505, 2501, 71, 71, 71, + 71, 2511, 71, 71, 2513, 71, 71, 71, 2509, 2510, + 2507, 2508, 2514, 71, 71, 71, 71, 71, 2512, 2515, + 2516, 2517, 71, 2518, 71, 71, 2520, 71, 71, 71, - 2523, 71, 71, 2522, 2526, 71, 2525, 2527, 71, 71, - 3082, 2519, 2524, 2520, 2529, 71, 71, 71, 2531, 2530, - 71, 71, 2528, 2532, 71, 2533, 2534, 2535, 71, 71, - 71, 71, 2536, 71, 2537, 71, 2542, 71, 2541, 2538, - 71, 2543, 71, 2540, 71, 2544, 2539, 71, 71, 2545, - 71, 71, 71, 2546, 2547, 2549, 2548, 2550, 71, 71, - 71, 71, 71, 2555, 71, 71, 71, 71, 71, 2553, - 2554, 71, 2552, 2556, 2560, 71, 2551, 2564, 71, 71, - 71, 71, 2563, 71, 2557, 71, 2558, 2559, 2562, 2568, - 2561, 2569, 71, 71, 2571, 2572, 2566, 3082, 2573, 2565, + 2521, 71, 2519, 2523, 2524, 2526, 71, 2527, 71, 2522, + 2525, 71, 71, 71, 2532, 2530, 71, 2529, 2528, 2531, + 71, 2533, 71, 2534, 71, 2537, 71, 71, 2535, 2536, + 2538, 71, 2540, 71, 71, 71, 2542, 2541, 71, 71, + 2539, 2543, 71, 2544, 2545, 2546, 71, 71, 71, 71, + 2547, 71, 2548, 71, 2553, 71, 2552, 2549, 71, 2554, + 71, 2551, 71, 2555, 2550, 71, 71, 2556, 71, 71, + 71, 2557, 2558, 2560, 2559, 2561, 71, 71, 71, 71, + 71, 2566, 71, 71, 71, 71, 71, 2564, 2565, 71, + 2563, 2567, 2571, 71, 2562, 2575, 71, 71, 71, 71, - 71, 71, 71, 2567, 71, 2574, 71, 71, 71, 71, - 2575, 71, 2576, 71, 71, 2579, 71, 2577, 2570, 71, - 2582, 71, 2578, 2584, 71, 2585, 71, 2580, 71, 2581, - 2586, 71, 2587, 71, 2583, 2589, 71, 71, 2588, 71, - 2593, 2590, 2591, 71, 71, 2594, 71, 71, 2596, 2597, - 71, 2592, 2598, 71, 71, 71, 71, 2599, 2603, 71, - 71, 2604, 2601, 2595, 2605, 71, 71, 71, 2600, 2607, - 71, 71, 71, 2611, 2612, 71, 2602, 71, 71, 71, - 2608, 2606, 2613, 71, 71, 2614, 2610, 71, 2620, 2609, - 2615, 71, 71, 2619, 71, 71, 2623, 71, 71, 2622, + 2574, 71, 2568, 71, 2569, 2570, 2573, 2579, 2572, 2580, + 71, 71, 2582, 2583, 2577, 3095, 2584, 2576, 71, 71, + 71, 2578, 71, 2585, 71, 71, 71, 71, 2586, 71, + 2587, 71, 71, 2590, 71, 2588, 2581, 71, 2593, 71, + 2589, 2595, 71, 2596, 71, 2591, 71, 2592, 2597, 71, + 2598, 71, 2594, 2600, 71, 71, 2599, 71, 2604, 2601, + 2602, 71, 71, 2605, 71, 71, 2608, 2609, 71, 2603, + 2610, 71, 71, 2606, 71, 2611, 71, 71, 2615, 71, + 71, 2616, 2607, 2617, 71, 71, 71, 2612, 2619, 71, + 71, 71, 2623, 71, 2613, 2624, 71, 2614, 71, 2620, - 2616, 71, 71, 2617, 2618, 71, 2624, 71, 2626, 71, - 2625, 71, 2628, 71, 71, 71, 2631, 2621, 2635, 71, - 71, 71, 71, 2627, 2629, 2630, 71, 71, 71, 2634, - 2637, 2632, 71, 71, 2633, 2636, 2639, 2642, 2638, 2640, - 2641, 3082, 2643, 71, 2650, 2644, 2645, 71, 71, 2646, - 71, 2647, 71, 2648, 71, 2649, 71, 71, 71, 2653, - 71, 2651, 71, 2657, 71, 71, 71, 2654, 2658, 2660, - 71, 71, 2662, 71, 71, 2664, 71, 2652, 2661, 2663, - 2655, 71, 2656, 71, 2659, 71, 71, 2669, 71, 71, - 2665, 71, 2666, 2670, 2667, 71, 2673, 71, 71, 71, + 2618, 71, 71, 71, 2626, 2622, 2625, 71, 2621, 2627, + 71, 2632, 71, 2631, 71, 71, 2628, 71, 2634, 2635, + 71, 2629, 71, 2630, 71, 71, 71, 2636, 2638, 2640, + 71, 71, 2637, 71, 71, 71, 2643, 2633, 2647, 71, + 2639, 71, 71, 71, 71, 2649, 71, 2641, 2642, 2646, + 71, 2644, 71, 2650, 2645, 2648, 2654, 2651, 2653, 2657, + 71, 2655, 71, 2652, 71, 2656, 71, 2658, 71, 2659, + 71, 2660, 71, 2661, 71, 71, 71, 71, 2665, 2663, + 2662, 71, 2669, 71, 71, 2666, 71, 2670, 2672, 71, + 71, 71, 2674, 71, 71, 2664, 71, 2667, 2673, 2675, - 2671, 2674, 71, 2677, 2668, 71, 2676, 71, 2679, 71, - 2672, 2675, 2678, 2680, 71, 71, 71, 71, 71, 2681, - 71, 71, 71, 2689, 71, 71, 2684, 71, 71, 71, - 2685, 2687, 2692, 2693, 2683, 71, 2690, 71, 2694, 71, - 2682, 2688, 71, 71, 2695, 2686, 2691, 2696, 71, 2697, - 2699, 71, 2698, 2700, 71, 2701, 71, 71, 71, 2703, - 71, 2706, 2704, 2705, 71, 2707, 2702, 71, 71, 2708, - 2709, 71, 71, 71, 71, 2714, 71, 71, 2712, 2716, - 71, 71, 2718, 71, 71, 71, 2710, 2717, 71, 2719, - 71, 2720, 2713, 2711, 71, 2724, 71, 71, 71, 71, + 71, 2668, 2676, 71, 2671, 2677, 71, 71, 2680, 2678, + 2681, 71, 71, 71, 71, 2679, 2682, 71, 2685, 71, + 2687, 71, 2683, 2686, 71, 2689, 2688, 71, 71, 2684, + 2691, 71, 2690, 2692, 71, 71, 2696, 71, 71, 71, + 71, 71, 2693, 71, 2694, 71, 2702, 2697, 71, 71, + 2700, 2698, 71, 2695, 2705, 71, 71, 2703, 71, 2707, + 2706, 71, 71, 2701, 71, 2699, 71, 2709, 2779, 2704, + 2708, 71, 2710, 2712, 71, 2711, 2713, 71, 2714, 71, + 71, 71, 2719, 71, 2716, 2717, 2718, 71, 71, 2715, + 71, 71, 2720, 2722, 71, 2721, 71, 71, 2727, 71, - 71, 2715, 71, 2722, 2721, 71, 2727, 71, 2728, 71, - 2725, 2726, 71, 71, 2723, 2731, 2729, 2732, 2734, 71, - 2736, 71, 2737, 71, 2730, 71, 2739, 71, 71, 71, - 71, 71, 2735, 71, 71, 2733, 2744, 71, 2743, 71, - 71, 2748, 71, 71, 2740, 2741, 2738, 2742, 2751, 71, - 2745, 71, 71, 2753, 71, 71, 2749, 2746, 2747, 71, - 2754, 71, 2750, 2756, 71, 2757, 71, 2759, 71, 71, - 71, 2752, 71, 2765, 2755, 71, 2764, 71, 3082, 2762, - 2761, 2758, 71, 2768, 71, 71, 71, 2760, 2769, 2766, - 71, 2770, 2763, 71, 2773, 2767, 2774, 71, 2771, 71, + 71, 2723, 2725, 71, 71, 2729, 71, 2730, 71, 71, + 71, 71, 2724, 2731, 2726, 2732, 71, 2733, 71, 2734, + 2737, 71, 71, 71, 2728, 71, 2735, 2740, 71, 2736, + 71, 2738, 71, 71, 2741, 2739, 71, 71, 2745, 71, + 2744, 2747, 71, 71, 2742, 2749, 71, 2750, 71, 2743, + 2752, 71, 71, 71, 2757, 71, 2748, 71, 71, 2753, + 2751, 71, 2746, 2756, 71, 71, 2761, 71, 2754, 2755, + 71, 2764, 71, 71, 2766, 71, 71, 2758, 2769, 71, + 71, 2762, 71, 2760, 2759, 2770, 71, 2767, 71, 2763, + 2772, 71, 71, 2765, 71, 71, 2771, 2768, 2777, 2774, - 71, 2776, 2775, 71, 71, 71, 71, 71, 2781, 2778, - 2779, 71, 71, 2772, 71, 2784, 71, 71, 71, 71, - 71, 2777, 2789, 71, 2785, 2780, 71, 71, 2782, 2783, - 2792, 71, 2788, 2793, 71, 2786, 2791, 71, 71, 2790, - 2795, 71, 2794, 2787, 2797, 71, 2796, 2798, 71, 2799, - 71, 71, 2801, 71, 71, 71, 2800, 2802, 71, 71, - 2806, 2807, 71, 71, 71, 71, 2811, 71, 2812, 71, - 71, 71, 71, 2813, 2810, 2849, 2803, 2804, 2808, 71, - 2805, 71, 71, 2809, 2817, 71, 2816, 2818, 71, 71, - 2814, 2815, 2821, 71, 2819, 71, 2820, 71, 71, 2824, + 71, 2775, 2781, 71, 71, 71, 71, 2783, 2782, 71, + 2773, 71, 2786, 3095, 2776, 2780, 2787, 71, 71, 2778, + 71, 2784, 2789, 2788, 71, 71, 71, 71, 71, 2794, + 2791, 2785, 2792, 71, 71, 71, 2797, 71, 71, 71, + 71, 71, 2790, 2802, 71, 2793, 2798, 71, 71, 71, + 2795, 2796, 2807, 2801, 2805, 71, 2799, 2804, 2806, 71, + 2803, 71, 71, 2808, 2800, 71, 2809, 2810, 71, 2811, + 71, 2812, 71, 71, 2814, 71, 71, 71, 2813, 71, + 2819, 2815, 2820, 71, 71, 71, 71, 2816, 2824, 71, + 2825, 71, 71, 3095, 2823, 2826, 71, 71, 2817, 2818, - 71, 71, 2825, 2823, 71, 2822, 71, 71, 71, 71, - 71, 2828, 71, 71, 2830, 71, 71, 2831, 71, 2829, - 71, 2826, 71, 71, 2827, 71, 71, 2840, 2841, 2832, - 71, 2836, 2833, 2834, 2835, 2837, 2838, 2843, 71, 71, - 3082, 2839, 2906, 71, 2844, 2842, 2845, 2847, 71, 2848, - 71, 2846, 2850, 71, 2851, 71, 2852, 2853, 71, 71, - 2854, 2855, 2858, 71, 2856, 2857, 71, 71, 2859, 71, - 71, 71, 71, 71, 2865, 71, 71, 71, 2864, 71, - 71, 2868, 71, 3082, 2860, 2861, 2867, 71, 71, 2869, - 2862, 71, 2863, 71, 2873, 2874, 71, 2870, 2875, 71, + 2821, 71, 2829, 71, 2822, 2830, 71, 2831, 71, 71, + 2834, 71, 2827, 71, 2832, 2828, 71, 2833, 2837, 71, + 71, 2836, 71, 2835, 71, 2838, 71, 71, 71, 71, + 71, 2841, 71, 71, 2843, 71, 71, 2844, 71, 2842, + 71, 71, 2839, 71, 2840, 71, 2853, 71, 2854, 2845, + 3095, 2849, 2846, 2847, 2848, 2850, 2851, 2856, 71, 71, + 3095, 2852, 71, 71, 2857, 2855, 2862, 2858, 2860, 71, + 71, 2859, 2861, 71, 2863, 71, 2864, 71, 2865, 2866, + 71, 71, 2867, 2868, 2871, 71, 2869, 2870, 2873, 71, + 2872, 71, 71, 71, 71, 71, 2878, 71, 71, 71, - 2872, 2866, 71, 2876, 71, 2871, 2880, 2877, 2882, 71, - 71, 2881, 71, 2878, 71, 71, 2879, 71, 71, 71, - 2889, 71, 2886, 2887, 2890, 2884, 71, 2892, 71, 71, - 71, 71, 2891, 3082, 2883, 2938, 2885, 71, 2888, 2893, - 71, 2912, 2894, 2895, 71, 2896, 71, 2897, 71, 2898, - 71, 2899, 71, 2900, 71, 2901, 71, 2902, 71, 71, - 2904, 71, 71, 71, 71, 71, 2909, 71, 2903, 71, - 71, 2905, 71, 2913, 2915, 71, 71, 71, 71, 2910, - 2917, 71, 2911, 2907, 2908, 2914, 71, 2919, 71, 2922, - 71, 2921, 71, 71, 2916, 71, 71, 71, 2924, 2920, + 2877, 71, 71, 2881, 71, 71, 2874, 71, 2880, 71, + 2890, 2882, 71, 2875, 2876, 71, 2886, 71, 2885, 2883, + 2887, 71, 71, 2879, 2893, 2884, 2888, 71, 71, 2894, + 71, 2891, 2889, 2895, 2892, 71, 71, 2896, 71, 71, + 71, 2899, 2903, 2897, 71, 2900, 2902, 71, 71, 3095, + 2904, 2905, 71, 2906, 71, 71, 2898, 2901, 2908, 71, + 2907, 2909, 71, 2910, 71, 2911, 71, 2912, 71, 2913, + 71, 2914, 71, 2915, 71, 71, 2917, 71, 71, 71, + 71, 71, 71, 71, 2916, 2922, 71, 2918, 71, 71, + 71, 2919, 71, 2926, 71, 2925, 2923, 2928, 71, 71, - 71, 71, 71, 71, 2918, 71, 2923, 2928, 2931, 2925, - 71, 2929, 71, 2927, 2926, 2930, 2932, 2933, 71, 2934, - 71, 2935, 71, 71, 71, 71, 2940, 71, 71, 71, - 2944, 71, 2937, 2936, 2943, 71, 2946, 71, 2942, 71, - 71, 71, 71, 71, 2939, 71, 2945, 71, 2941, 71, - 2947, 71, 2953, 71, 3082, 71, 2950, 71, 2948, 2949, - 2952, 2954, 2957, 2960, 71, 71, 71, 2951, 2955, 2958, - 71, 2956, 71, 2959, 2961, 2962, 71, 71, 2963, 2964, - 71, 2965, 71, 71, 71, 2966, 2968, 71, 71, 2969, - 2967, 71, 2970, 2973, 71, 71, 71, 2971, 71, 71, + 2920, 2921, 2924, 2927, 71, 71, 2932, 2930, 2929, 71, + 2935, 71, 2934, 71, 71, 71, 71, 2933, 2937, 71, + 2931, 71, 71, 71, 71, 2936, 71, 2941, 71, 2944, + 71, 2940, 2942, 2938, 2951, 2945, 71, 2939, 71, 2943, + 2946, 71, 2947, 71, 2948, 71, 71, 2950, 71, 71, + 71, 2949, 71, 71, 2956, 2957, 2952, 71, 2959, 71, + 2953, 2955, 71, 71, 71, 71, 71, 2958, 71, 71, + 71, 2954, 2960, 71, 71, 2966, 71, 2973, 71, 2963, + 3095, 2961, 2962, 2965, 71, 2967, 71, 71, 2971, 2969, + 2964, 2968, 2970, 2974, 2975, 71, 2972, 71, 2976, 2977, - 2976, 2978, 71, 2972, 71, 2974, 2975, 2981, 71, 71, - 71, 2984, 71, 2979, 71, 2985, 2977, 71, 71, 71, - 2988, 2989, 71, 2980, 2982, 2986, 71, 71, 2983, 71, - 71, 71, 71, 2990, 71, 2991, 2993, 2987, 2994, 71, - 2995, 71, 71, 71, 71, 71, 71, 2999, 2992, 3001, - 71, 2996, 2997, 71, 3000, 71, 2998, 71, 71, 3003, - 3006, 71, 3007, 3004, 3002, 3008, 71, 71, 3012, 71, - 71, 3014, 3005, 71, 3015, 3013, 71, 71, 3009, 3010, - 71, 3016, 71, 71, 3020, 3017, 3011, 3018, 3021, 71, - 71, 71, 3023, 71, 71, 71, 3022, 71, 3024, 71, + 71, 2978, 71, 71, 71, 2979, 71, 2981, 71, 71, + 71, 2982, 2986, 2983, 71, 71, 71, 71, 71, 2991, + 71, 2989, 71, 2980, 71, 2985, 71, 2988, 2987, 2994, + 71, 71, 2997, 71, 2984, 71, 2998, 2990, 71, 2992, + 71, 2993, 71, 3001, 2996, 3002, 2995, 71, 2999, 71, + 71, 71, 71, 71, 3007, 71, 3003, 3000, 3006, 71, + 3004, 3008, 71, 71, 71, 71, 71, 71, 3012, 3005, + 71, 3014, 71, 3009, 71, 71, 71, 3011, 71, 3010, + 3019, 3020, 71, 3016, 71, 3013, 3015, 3017, 3021, 71, + 71, 3018, 3025, 71, 71, 3026, 3027, 71, 3022, 3029, - 71, 3029, 3019, 71, 3026, 71, 3032, 71, 71, 3033, - 71, 71, 71, 71, 3025, 71, 71, 3036, 3027, 3028, - 3034, 3031, 3030, 3035, 71, 3040, 71, 71, 71, 3039, - 71, 3041, 3037, 71, 3038, 71, 3044, 71, 3046, 71, - 3042, 71, 3047, 71, 3048, 3051, 71, 71, 71, 3045, - 3049, 71, 3050, 3052, 3043, 71, 71, 3053, 3054, 71, - 71, 3060, 71, 3055, 71, 71, 3057, 3056, 71, 3058, - 3059, 71, 71, 3062, 71, 71, 3063, 71, 3066, 3067, - 71, 71, 71, 3070, 3061, 3071, 71, 3082, 71, 3073, - 71, 3064, 71, 3065, 3068, 3072, 3074, 71, 71, 3075, + 3023, 71, 71, 3024, 71, 3028, 3030, 71, 3033, 3034, + 71, 71, 3031, 71, 71, 3037, 3032, 71, 3035, 3036, + 71, 71, 71, 71, 3042, 71, 71, 71, 3039, 71, + 71, 71, 3045, 3046, 71, 71, 3038, 71, 71, 3044, + 3049, 3040, 3041, 71, 3043, 71, 3047, 71, 3050, 3048, + 71, 3053, 3054, 3056, 71, 3057, 3052, 3051, 3055, 71, + 71, 3059, 71, 3060, 71, 71, 71, 3064, 71, 3061, + 71, 71, 3062, 3066, 71, 3065, 3067, 71, 3058, 71, + 71, 3068, 71, 71, 71, 3063, 3069, 3071, 3073, 71, + 71, 71, 71, 71, 71, 3075, 3076, 71, 3079, 3070, - 3069, 71, 71, 3076, 71, 3082, 3077, 3080, 71, 3081, - 71, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3078, 3082, 3079, 43, 43, 43, 43, 43, 43, - 43, 48, 48, 48, 48, 48, 48, 48, 53, 53, - 53, 53, 53, 53, 53, 59, 59, 59, 59, 59, - 59, 59, 64, 64, 64, 64, 64, 64, 64, 74, - 74, 3082, 74, 74, 74, 74, 142, 142, 3082, 3082, - 3082, 142, 142, 144, 144, 3082, 3082, 144, 3082, 144, - 146, 3082, 3082, 3082, 3082, 3082, 146, 149, 149, 3082, - 3082, 3082, 149, 149, 151, 3082, 3082, 3082, 3082, 3082, + 3080, 71, 3072, 3074, 71, 71, 3083, 3084, 71, 71, + 71, 3077, 3078, 3081, 3086, 71, 3085, 3087, 71, 71, + 71, 71, 71, 3082, 3095, 3089, 3088, 3090, 3095, 3091, + 3093, 71, 3094, 71, 3095, 3095, 3095, 3095, 3095, 3095, + 3092, 43, 43, 43, 43, 43, 43, 43, 48, 48, + 48, 48, 48, 48, 48, 53, 53, 53, 53, 53, + 53, 53, 59, 59, 59, 59, 59, 59, 59, 64, + 64, 64, 64, 64, 64, 64, 74, 74, 3095, 74, + 74, 74, 74, 142, 142, 3095, 3095, 3095, 142, 142, + 144, 144, 3095, 3095, 144, 3095, 144, 146, 3095, 3095, - 151, 153, 153, 3082, 153, 153, 153, 153, 75, 75, - 3082, 75, 75, 75, 75, 13, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3095, 3095, 3095, 146, 149, 149, 3095, 3095, 3095, 149, + 149, 151, 3095, 3095, 3095, 3095, 3095, 151, 153, 153, + 3095, 153, 153, 153, 153, 75, 75, 3095, 75, 75, + 75, 75, 13, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095 } ; -static const flex_int16_t yy_chk[6057] = +static const flex_int16_t yy_chk[6074] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2116,7 +2122,7 @@ static const flex_int16_t yy_chk[6057] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3088, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3101, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, @@ -2125,7 +2131,7 @@ static const flex_int16_t yy_chk[6057] = 26, 21, 23, 89, 12, 23, 27, 27, 47, 47, 21, 24, 42, 90, 26, 27, 24, 28, 34, 52, 24, 28, 52, 24, 28, 24, 24, 42, 32, 32, - 1018, 28, 90, 28, 33, 33, 24, 32, 72, 33, + 1020, 28, 90, 28, 33, 33, 24, 32, 72, 33, 69, 35, 72, 32, 63, 63, 35, 32, 77, 80, 35, 77, 37, 37, 69, 33, 35, 37, 230, 35, 230, 80, 39, 39, 38, 39, 35, 37, 37, 38, @@ -2262,518 +2268,520 @@ static const flex_int16_t yy_chk[6057] = 606, 598, 603, 605, 605, 602, 608, 606, 607, 599, 599, 607, 608, 601, 610, 609, 611, 613, 604, 610, - 615, 611, 611, 612, 612, 617, 607, 609, 614, 616, - 614, 616, 618, 619, 620, 621, 623, 624, 622, 615, - 623, 625, 613, 617, 622, 626, 624, 627, 628, 629, - 618, 619, 631, 620, 630, 621, 625, 632, 631, 634, - 626, 629, 633, 635, 636, 627, 637, 628, 636, 630, - 638, 632, 639, 640, 633, 641, 642, 646, 634, 643, - 43, 642, 635, 648, 637, 645, 638, 644, 644, 645, - 639, 640, 640, 643, 641, 647, 646, 648, 649, 650, - 651, 652, 653, 649, 655, 654, 647, 656, 657, 653, - 654, 655, 656, 657, 652, 650, 658, 659, 660, 651, + 615, 611, 611, 612, 612, 617, 607, 609, 614, 610, + 614, 616, 618, 616, 619, 620, 621, 623, 622, 615, + 624, 623, 613, 617, 622, 625, 626, 627, 628, 624, + 618, 629, 619, 630, 620, 632, 621, 634, 631, 633, + 625, 626, 635, 629, 631, 627, 636, 628, 630, 632, + 636, 633, 637, 638, 639, 640, 634, 641, 642, 644, + 644, 635, 645, 642, 643, 646, 645, 648, 647, 638, + 637, 650, 639, 640, 640, 649, 641, 651, 643, 647, + 649, 648, 652, 653, 646, 655, 654, 650, 656, 657, + 653, 654, 655, 656, 657, 652, 651, 658, 659, 660, - 662, 661, 666, 664, 659, 663, 666, 660, 664, 662, - 665, 667, 668, 665, 658, 661, 669, 663, 670, 671, - 677, 668, 672, 672, 675, 667, 673, 673, 674, 674, - 678, 669, 670, 675, 679, 673, 678, 680, 681, 677, - 671, 680, 682, 683, 685, 684, 686, 687, 688, 689, - 681, 684, 685, 686, 679, 692, 699, 698, 695, 703, - 702, 683, 699, 703, 707, 687, 698, 682, 709, 689, - 692, 701, 14, 688, 690, 695, 702, 701, 706, 690, - 704, 704, 707, 690, 705, 705, 690, 708, 709, 706, - 712, 710, 713, 690, 690, 712, 690, 710, 714, 715, + 661, 662, 664, 665, 663, 659, 665, 664, 660, 666, + 662, 667, 668, 666, 661, 658, 663, 669, 671, 670, + 682, 668, 672, 672, 677, 667, 673, 673, 674, 674, + 678, 675, 669, 670, 679, 673, 678, 680, 681, 671, + 675, 680, 683, 677, 686, 682, 684, 685, 687, 688, + 681, 686, 684, 689, 679, 685, 692, 699, 698, 695, + 683, 702, 701, 699, 43, 703, 687, 698, 701, 703, + 707, 692, 706, 689, 688, 690, 695, 702, 704, 704, + 690, 705, 705, 706, 690, 708, 709, 690, 707, 713, + 710, 715, 14, 712, 690, 690, 710, 690, 712, 708, - 718, 708, 711, 711, 711, 716, 711, 718, 716, 711, - 717, 717, 720, 713, 711, 13, 714, 719, 719, 728, - 711, 711, 721, 721, 715, 722, 723, 720, 724, 723, - 722, 725, 725, 724, 726, 727, 726, 729, 728, 730, - 732, 729, 731, 733, 733, 734, 737, 727, 732, 735, - 736, 736, 739, 738, 742, 742, 740, 753, 753, 730, - 734, 731, 740, 735, 737, 738, 741, 743, 754, 754, - 745, 741, 743, 743, 739, 745, 746, 747, 750, 748, - 749, 750, 746, 747, 748, 751, 749, 752, 755, 756, - 759, 751, 757, 758, 761, 752, 755, 757, 760, 760, + 714, 716, 717, 717, 716, 718, 709, 711, 711, 711, + 713, 711, 718, 720, 711, 726, 715, 726, 714, 711, + 719, 719, 721, 721, 722, 711, 711, 723, 720, 722, + 723, 724, 725, 725, 727, 728, 724, 729, 730, 732, + 731, 729, 733, 733, 738, 734, 727, 732, 735, 736, + 736, 737, 739, 797, 728, 740, 738, 797, 730, 731, + 734, 740, 735, 741, 742, 742, 743, 746, 741, 737, + 745, 743, 743, 746, 739, 745, 747, 750, 748, 749, + 750, 751, 747, 748, 752, 749, 755, 751, 753, 753, + 754, 754, 752, 756, 755, 757, 758, 759, 760, 760, - 758, 764, 762, 761, 766, 763, 767, 756, 768, 759, - 762, 763, 769, 766, 770, 767, 771, 769, 774, 771, - 764, 772, 773, 770, 775, 776, 772, 778, 778, 777, - 779, 780, 768, 775, 777, 777, 773, 781, 776, 782, - 785, 783, 785, 774, 783, 779, 781, 786, 786, 787, - 780, 788, 783, 789, 792, 790, 788, 791, 793, 794, - 795, 796, 797, 782, 1036, 796, 798, 799, 794, 802, - 787, 1036, 800, 799, 789, 790, 792, 791, 793, 801, - 797, 800, 803, 795, 804, 798, 805, 806, 802, 808, - 804, 801, 806, 807, 807, 809, 803, 810, 811, 812, + 757, 761, 763, 758, 762, 764, 766, 768, 763, 767, + 761, 756, 762, 770, 769, 766, 759, 771, 767, 769, + 771, 772, 770, 773, 764, 774, 772, 775, 776, 777, + 779, 768, 778, 778, 777, 777, 775, 773, 780, 781, + 782, 776, 783, 784, 788, 779, 784, 786, 781, 786, + 774, 787, 787, 789, 784, 790, 793, 780, 789, 791, + 783, 792, 794, 795, 782, 788, 796, 798, 799, 800, + 804, 801, 795, 803, 802, 800, 790, 805, 793, 791, + 801, 792, 794, 805, 804, 798, 802, 799, 806, 796, + 807, 809, 803, 808, 808, 807, 810, 811, 812, 813, - 805, 813, 814, 0, 809, 815, 811, 816, 817, 808, - 818, 820, 819, 816, 817, 824, 821, 810, 819, 812, - 822, 814, 821, 813, 818, 815, 822, 825, 823, 827, - 826, 820, 823, 831, 824, 826, 828, 828, 829, 825, - 830, 832, 833, 830, 829, 834, 836, 825, 833, 842, - 827, 831, 835, 835, 832, 837, 838, 838, 839, 840, - 837, 841, 841, 840, 836, 834, 843, 844, 845, 847, - 848, 842, 844, 839, 850, 851, 853, 853, 854, 857, - 855, 858, 854, 859, 848, 858, 843, 845, 856, 856, - 873, 860, 998, 847, 850, 855, 851, 852, 859, 873, + 814, 815, 806, 816, 817, 810, 812, 818, 820, 821, + 817, 809, 819, 818, 820, 822, 825, 811, 823, 813, + 815, 822, 814, 816, 823, 826, 819, 824, 827, 821, + 828, 824, 832, 827, 830, 825, 833, 826, 829, 829, + 830, 831, 834, 835, 831, 826, 836, 836, 834, 833, + 832, 828, 837, 838, 839, 839, 840, 841, 838, 842, + 842, 841, 843, 835, 845, 844, 848, 846, 849, 845, + 837, 840, 851, 852, 854, 854, 855, 858, 856, 859, + 855, 860, 849, 859, 843, 844, 846, 857, 857, 861, + 848, 875, 851, 856, 852, 853, 860, 875, 853, 863, - 852, 862, 852, 998, 857, 860, 852, 861, 852, 864, - 865, 863, 861, 852, 865, 862, 863, 863, 852, 866, - 867, 868, 869, 864, 870, 867, 865, 869, 871, 872, - 874, 875, 880, 868, 866, 867, 874, 875, 870, 876, - 877, 877, 878, 872, 879, 876, 881, 878, 882, 871, - 879, 884, 885, 958, 880, 886, 889, 885, 887, 888, - 888, 889, 891, 884, 890, 881, 882, 883, 883, 886, - 887, 892, 890, 883, 958, 883, 891, 893, 894, 894, - 895, 883, 897, 899, 895, 900, 883, 883, 897, 898, - 892, 901, 898, 883, 902, 903, 893, 901, 900, 902, + 853, 13, 858, 861, 853, 862, 853, 865, 866, 864, + 862, 853, 866, 863, 864, 864, 853, 867, 868, 869, + 870, 865, 871, 868, 866, 870, 872, 873, 874, 876, + 881, 869, 867, 868, 877, 876, 871, 874, 878, 878, + 877, 873, 882, 879, 880, 883, 885, 872, 879, 886, + 880, 913, 881, 887, 886, 892, 888, 890, 885, 889, + 889, 882, 890, 883, 884, 884, 891, 887, 888, 892, + 884, 913, 884, 893, 891, 894, 895, 895, 884, 899, + 898, 896, 899, 884, 884, 896, 898, 900, 901, 902, + 884, 903, 893, 904, 894, 902, 903, 908, 906, 907, - 905, 906, 899, 907, 909, 908, 910, 911, 912, 905, - 906, 908, 911, 909, 903, 913, 914, 916, 915, 907, - 919, 918, 917, 922, 925, 910, 916, 918, 912, 913, - 915, 917, 920, 924, 926, 927, 914, 919, 920, 922, - 928, 929, 0, 930, 925, 931, 934, 924, 930, 927, - 931, 934, 935, 926, 936, 936, 929, 937, 928, 938, - 940, 935, 941, 937, 944, 942, 942, 941, 941, 942, - 943, 945, 938, 943, 946, 947, 940, 950, 944, 948, - 949, 951, 952, 950, 953, 964, 955, 0, 952, 954, - 946, 945, 948, 947, 954, 949, 961, 964, 959, 953, + 911, 901, 910, 909, 914, 912, 900, 906, 907, 909, + 912, 910, 904, 908, 915, 916, 917, 918, 914, 911, + 920, 925, 919, 921, 923, 917, 918, 916, 919, 921, + 926, 928, 927, 930, 915, 925, 929, 920, 931, 932, + 923, 935, 941, 931, 932, 928, 935, 936, 930, 938, + 926, 927, 937, 937, 929, 938, 936, 939, 941, 942, + 945, 946, 943, 943, 942, 942, 943, 947, 944, 948, + 939, 944, 949, 950, 945, 952, 951, 954, 953, 956, + 959, 946, 951, 947, 953, 949, 955, 948, 950, 962, + 0, 955, 954, 956, 958, 952, 966, 958, 960, 961, - 955, 951, 957, 959, 960, 957, 962, 967, 963, 960, - 966, 962, 961, 963, 968, 969, 966, 970, 970, 971, - 968, 969, 972, 967, 973, 974, 974, 973, 971, 975, - 976, 977, 978, 979, 982, 978, 980, 981, 985, 982, - 972, 987, 980, 981, 985, 983, 979, 975, 984, 976, - 983, 977, 988, 984, 989, 992, 990, 991, 991, 987, - 989, 990, 993, 994, 992, 995, 996, 997, 999, 996, - 997, 993, 988, 1000, 1001, 1004, 1002, 1003, 1006, 1006, - 1007, 994, 1002, 1003, 995, 1000, 999, 1005, 1008, 1009, - 1004, 1010, 1005, 1001, 1011, 1010, 1012, 1013, 1014, 1007, + 963, 959, 964, 960, 961, 962, 965, 964, 966, 963, + 968, 965, 969, 970, 971, 973, 968, 972, 972, 970, + 971, 974, 975, 977, 973, 975, 976, 976, 969, 978, + 979, 980, 981, 984, 980, 985, 982, 983, 984, 974, + 985, 977, 982, 983, 986, 981, 987, 989, 978, 986, + 979, 990, 987, 991, 994, 992, 993, 993, 995, 991, + 992, 996, 997, 994, 1000, 989, 998, 995, 1001, 998, + 999, 990, 1002, 999, 1003, 1000, 1004, 1005, 1009, 996, + 1006, 997, 1004, 1005, 1002, 1007, 1001, 1008, 1008, 1010, + 1007, 1013, 1011, 1003, 1012, 1006, 1014, 1009, 1012, 1015, - 1016, 1009, 1008, 1017, 1017, 1012, 1019, 1020, 1022, 1021, - 1024, 1024, 1011, 1022, 1025, 1023, 1013, 1040, 1040, 1016, - 1019, 1021, 1020, 1014, 1023, 1026, 1027, 1029, 1028, 1029, - 1030, 1026, 1027, 1028, 1025, 1030, 1031, 1032, 1033, 1034, - 1035, 1037, 1038, 1033, 1041, 1042, 1044, 1043, 1045, 1069, - 1031, 1032, 1044, 1069, 1034, 1046, 1037, 0, 1041, 1035, - 1046, 1038, 1043, 1042, 1048, 1048, 1051, 1049, 1045, 1046, - 1052, 1046, 1049, 1051, 1046, 1050, 1050, 1053, 1054, 1056, - 1053, 1055, 1057, 1058, 1052, 1060, 1059, 1057, 1056, 1061, - 1060, 1062, 1064, 1064, 1067, 0, 1065, 1054, 1059, 1055, + 1016, 1018, 1021, 1010, 1011, 1014, 1019, 1019, 1022, 1013, + 1023, 1027, 1024, 1026, 1026, 1025, 1021, 1024, 1015, 0, + 1018, 1028, 1023, 1022, 1025, 1016, 1029, 1028, 1030, 1033, + 1032, 1027, 1029, 1030, 1031, 1032, 1031, 1034, 1036, 1035, + 1037, 1038, 1039, 1033, 1035, 1040, 1042, 1042, 1038, 1043, + 1044, 1034, 1045, 1036, 1046, 1047, 1157, 1039, 1157, 1037, + 1046, 1050, 1050, 1043, 1040, 1048, 1051, 1045, 1044, 1053, + 1048, 1051, 1052, 1052, 1054, 1047, 1053, 1055, 1056, 1048, + 1055, 1048, 1057, 1058, 1048, 1059, 1060, 1061, 1054, 1062, + 1059, 1063, 1058, 1064, 1062, 1066, 1066, 1056, 1067, 1061, - 1061, 1065, 1058, 1066, 1068, 1071, 1070, 1072, 1066, 1068, - 1062, 1073, 1074, 1075, 1067, 1070, 1076, 1077, 1078, 1079, - 1071, 1080, 1072, 1076, 1074, 1081, 1082, 1083, 1075, 1077, - 1073, 1081, 1084, 1085, 1088, 1089, 1090, 1078, 1087, 1080, - 1079, 1082, 1085, 1089, 1087, 1091, 1092, 1083, 1088, 1093, - 1091, 1094, 1084, 1095, 1093, 1093, 1090, 1100, 1092, 1096, - 1097, 1097, 1099, 1101, 1102, 1102, 1100, 1095, 1104, 1101, - 1094, 1103, 1096, 1098, 1105, 1099, 1103, 1104, 1098, 1106, - 1105, 1098, 1098, 1107, 1106, 1109, 1098, 1112, 1107, 1108, - 1108, 1113, 1098, 1110, 1110, 1111, 1098, 1115, 1111, 1114, + 1057, 1068, 1063, 1067, 1069, 1060, 1068, 1071, 1070, 1072, + 1073, 1071, 1064, 1070, 1074, 1075, 1076, 1077, 1072, 1078, + 1080, 1079, 1081, 1082, 1069, 1073, 1078, 1084, 1076, 1074, + 1083, 1085, 1077, 1079, 1075, 1086, 1083, 1087, 1089, 1080, + 1090, 1082, 1084, 1081, 1089, 1091, 1087, 1092, 1094, 1096, + 1097, 1085, 1093, 1091, 1090, 1086, 1095, 1093, 1098, 1128, + 1094, 1095, 1095, 1101, 1097, 1099, 1099, 1092, 1096, 1102, + 1128, 1098, 1100, 1103, 1104, 1104, 1101, 1100, 1102, 1103, + 1100, 1100, 1105, 1106, 1107, 1100, 1111, 1105, 1108, 1109, + 1107, 1100, 1106, 1108, 1109, 1100, 1110, 1110, 1112, 1112, - 1111, 1117, 1118, 1124, 1124, 1116, 1109, 1112, 1114, 1113, - 1116, 1121, 1119, 1120, 1123, 1117, 1121, 1115, 1119, 1120, - 1118, 1122, 1126, 1123, 1129, 1122, 1125, 1125, 1123, 1125, - 1123, 1128, 1123, 1126, 1123, 1128, 1130, 1131, 1132, 1129, - 1133, 1134, 1135, 1132, 1132, 1136, 1131, 1135, 1137, 1133, - 1138, 1139, 1140, 1144, 1130, 1141, 1148, 1137, 1146, 1136, - 1143, 1141, 1149, 1134, 1142, 1142, 1140, 1144, 1143, 1138, - 1139, 1145, 1146, 1147, 1148, 1150, 1145, 1151, 1151, 1152, - 1150, 1158, 1147, 1153, 1153, 1157, 1154, 1149, 1154, 1156, - 1157, 1161, 1156, 1159, 1152, 1160, 1160, 1162, 1162, 1165, + 1113, 1114, 1115, 1113, 1116, 1113, 1117, 1111, 1119, 1118, + 1120, 1121, 1122, 1116, 1118, 0, 1125, 1121, 1122, 1123, + 1115, 1114, 1119, 1124, 1123, 1125, 1117, 1124, 1120, 1130, + 1125, 1131, 1125, 1130, 1125, 1132, 1125, 1126, 1126, 1127, + 1127, 1133, 1127, 1134, 1136, 1135, 1131, 1137, 1134, 1134, + 1133, 1138, 1137, 1132, 1135, 1139, 1140, 1141, 1142, 1144, + 1144, 1143, 1145, 1146, 1139, 1138, 1136, 1143, 1147, 1148, + 1145, 1149, 1142, 1147, 1150, 1140, 1141, 1146, 1151, 1152, + 1149, 1150, 1153, 1148, 1154, 1154, 1155, 1153, 1156, 1156, + 1159, 1161, 1160, 1159, 1162, 1164, 1151, 1160, 1163, 1163, - 1158, 1164, 1159, 1163, 1163, 1166, 1164, 1167, 1167, 1168, - 1169, 1161, 1170, 1169, 1171, 1172, 1173, 1174, 1173, 1171, - 1165, 1177, 1176, 1178, 1172, 1176, 1166, 1179, 1178, 1168, - 1186, 1181, 1170, 1180, 0, 1174, 1177, 1182, 1180, 1181, - 1183, 1179, 1182, 1184, 1184, 1183, 1185, 1187, 1186, 1188, - 1189, 1185, 1191, 1187, 1192, 1194, 1188, 1193, 1191, 1195, - 1192, 1194, 1193, 1189, 1196, 1197, 1198, 1198, 1195, 1199, - 1201, 1202, 1203, 1204, 1205, 1207, 1197, 1208, 1203, 1204, - 1205, 1207, 1209, 1196, 1210, 1211, 1212, 1213, 1213, 1199, - 1201, 1208, 1214, 1215, 1202, 1216, 1210, 1208, 1217, 1211, + 1168, 1155, 1169, 1162, 1152, 1165, 1165, 1166, 1166, 1167, + 1161, 1170, 1170, 1171, 1167, 1164, 1172, 1173, 1175, 1172, + 1174, 1168, 1176, 1169, 1176, 1174, 1177, 1175, 1179, 1181, + 1180, 1179, 1182, 1171, 1181, 1183, 1185, 1173, 1186, 1184, + 1183, 1185, 1189, 1186, 1177, 1180, 1182, 1184, 1187, 1187, + 1188, 1190, 1191, 1192, 1199, 1188, 1194, 1190, 1195, 1191, + 1189, 1197, 1194, 1196, 1195, 1198, 1192, 1197, 1196, 1200, + 1201, 1201, 1202, 1199, 1198, 1204, 1205, 1206, 1207, 1208, + 1200, 1210, 1211, 1206, 1207, 1208, 1212, 1210, 1213, 1214, + 1215, 1217, 1202, 1216, 1216, 1204, 1211, 1218, 1219, 1205, - 1218, 1218, 1209, 1217, 1212, 1219, 1220, 1222, 1225, 1223, - 1227, 1220, 1214, 1216, 1223, 1223, 1224, 1225, 1215, 1226, - 1228, 1229, 0, 1232, 1227, 1230, 1222, 1226, 1219, 1231, - 1230, 1231, 1234, 1230, 1224, 1228, 1229, 1232, 1234, 1229, - 1235, 1236, 1237, 1238, 1235, 1239, 1240, 1237, 1237, 1241, - 1242, 1243, 1236, 1244, 1241, 1242, 1245, 1248, 1244, 1247, - 1249, 1252, 1238, 1251, 1240, 1250, 1250, 1251, 1253, 1243, - 1255, 1239, 1256, 1247, 1254, 1248, 1245, 1258, 1249, 1252, - 1254, 1257, 1255, 1259, 1260, 1261, 1262, 1253, 1264, 1263, - 1261, 1256, 1258, 1262, 1263, 1257, 1265, 1267, 1259, 1266, + 1213, 1222, 1211, 1214, 1220, 1223, 1212, 1225, 1215, 1220, + 1223, 1217, 1221, 1221, 1226, 1227, 1219, 1229, 1228, 1226, + 1226, 1230, 1218, 1231, 1222, 1229, 1225, 1228, 1232, 1233, + 1234, 1235, 1234, 1227, 1233, 1230, 1237, 1233, 1231, 1239, + 1238, 1241, 1237, 1232, 1238, 1235, 1232, 1240, 1242, 1243, + 1239, 1244, 1240, 1240, 1245, 1246, 1244, 1247, 1248, 1245, + 1241, 1250, 1247, 1251, 1252, 1253, 1253, 1243, 1254, 1255, + 1256, 1257, 1254, 1246, 1242, 1250, 1258, 1257, 1248, 1259, + 1260, 1251, 1252, 1263, 1261, 1262, 1264, 1255, 1258, 1256, + 1265, 1264, 1267, 1270, 1260, 1268, 1266, 1265, 1259, 1261, - 1266, 1268, 1269, 1260, 1270, 1265, 1264, 1268, 1271, 1270, - 1272, 1277, 1267, 1279, 1271, 1277, 1272, 1273, 1273, 1274, - 1274, 1276, 1276, 1269, 1278, 1280, 1281, 1282, 1283, 1283, - 1284, 1279, 1285, 1278, 1282, 1287, 1288, 1286, 1289, 1280, - 1285, 1281, 1286, 1289, 1289, 1291, 1290, 1292, 1292, 1287, - 1284, 1290, 1290, 1293, 1294, 1288, 1296, 1295, 1297, 1298, - 1299, 1296, 1300, 1302, 1301, 1291, 1295, 1304, 1300, 1301, - 1303, 1307, 1293, 1294, 1305, 1306, 1303, 1297, 1299, 1298, - 1305, 1306, 1308, 1309, 1310, 1311, 1304, 1312, 1316, 1302, - 1307, 1313, 1314, 1314, 1315, 1317, 1317, 1315, 1321, 1311, + 1262, 1266, 1263, 1271, 1268, 1269, 1269, 1272, 1270, 1271, + 1267, 1273, 1274, 1275, 1276, 1276, 1273, 1281, 1274, 1275, + 1277, 1277, 1279, 1279, 1282, 1280, 1281, 1283, 1272, 1280, + 1284, 1285, 1286, 1286, 1287, 1288, 1290, 1291, 1285, 1289, + 1294, 1283, 1282, 1288, 1289, 1284, 1292, 1295, 1295, 1296, + 1290, 1292, 1292, 1293, 1287, 1297, 1291, 1298, 1293, 1293, + 1294, 1300, 1299, 1301, 1302, 1303, 1298, 1299, 1296, 1305, + 1304, 1303, 1306, 1307, 1297, 1304, 1314, 1310, 1306, 1308, + 1300, 1309, 1302, 1301, 1311, 1308, 1312, 1309, 1313, 1315, + 1314, 1316, 1307, 1317, 1317, 1305, 1310, 1318, 0, 1319, - 1316, 1308, 1309, 1310, 1318, 1318, 1313, 1319, 1312, 1320, - 1322, 1321, 1319, 1320, 1323, 1324, 1328, 1324, 1326, 1322, - 1327, 1324, 1329, 1330, 1335, 1327, 1333, 1323, 1331, 1331, - 1332, 1328, 1333, 1334, 1324, 1332, 1326, 1335, 1336, 1330, - 1337, 1338, 1329, 1336, 1337, 1338, 1339, 1340, 1334, 1341, - 1342, 1343, 1343, 1345, 1347, 1348, 1342, 1349, 1349, 1351, - 1348, 1350, 1353, 1353, 1357, 1340, 1339, 1350, 1358, 1341, - 1355, 1345, 1361, 1355, 1362, 1347, 1356, 1356, 1360, 1351, - 1357, 1360, 1364, 1362, 1358, 1363, 1363, 1365, 1366, 1367, - 1368, 1370, 1361, 1371, 1367, 1369, 1369, 1364, 1372, 1373, + 1318, 1320, 1320, 1311, 1329, 1312, 1316, 1313, 1321, 1321, + 1315, 1319, 1322, 1324, 1323, 1325, 1326, 1322, 1323, 1327, + 1331, 1327, 1329, 1330, 1325, 1327, 1324, 1332, 1330, 1326, + 1333, 1334, 1334, 1337, 1335, 1331, 1336, 1338, 1327, 1335, + 1339, 1342, 1336, 1344, 1343, 1339, 1333, 1332, 1337, 1340, + 1338, 1341, 1344, 1340, 1345, 1341, 1351, 1346, 1347, 1347, + 1349, 1342, 1343, 1346, 1352, 1353, 1353, 1354, 1355, 1352, + 1357, 1357, 1359, 1354, 1345, 1359, 1361, 1351, 1349, 1360, + 1360, 1362, 1364, 1365, 1366, 1364, 1367, 1367, 1355, 1368, + 1369, 1370, 1361, 1366, 1371, 1372, 1374, 1362, 1375, 1371, - 1370, 1374, 1374, 1375, 1368, 1376, 1378, 1366, 1365, 1377, - 1381, 1371, 1383, 1372, 1377, 1379, 1379, 1375, 1380, 1382, - 1382, 1378, 1380, 1376, 1373, 1384, 1386, 1385, 1387, 1390, - 1381, 1385, 1391, 1387, 1383, 1392, 1384, 1389, 1389, 1393, - 1394, 1395, 1395, 1396, 1397, 1386, 1391, 1390, 1396, 1398, - 1399, 1400, 1401, 1393, 1392, 1392, 1400, 1403, 1402, 1399, - 1402, 1404, 1403, 1405, 1397, 1394, 1408, 1404, 1406, 1398, - 1409, 1409, 1401, 1410, 1406, 1411, 1414, 1413, 1415, 1415, - 1408, 1411, 1413, 1405, 1416, 1416, 1418, 1417, 1419, 1423, - 1420, 1425, 1410, 1420, 1421, 1421, 1422, 1425, 1431, 1424, + 1373, 1373, 1376, 1365, 1368, 1374, 1377, 1378, 1378, 1372, + 1370, 1369, 1379, 1381, 1380, 1382, 1375, 1376, 1381, 1383, + 1383, 1384, 1385, 1386, 1386, 1384, 1379, 1387, 1388, 1389, + 1382, 1377, 1380, 1389, 1390, 1391, 1393, 1393, 1394, 1388, + 1391, 1395, 1385, 1396, 1397, 1398, 1399, 1399, 1401, 1387, + 1403, 1402, 1400, 1390, 1405, 1395, 1394, 1400, 1397, 1403, + 1404, 1409, 1396, 1396, 1406, 1404, 1406, 1407, 1401, 1408, + 1398, 1402, 1407, 1410, 1405, 1408, 1412, 1413, 1413, 1410, + 1414, 1409, 1415, 1418, 1417, 1419, 1419, 1421, 1415, 1417, + 1412, 1420, 1420, 1422, 1423, 1424, 1425, 1425, 1424, 1414, - 1414, 1417, 1424, 1419, 1418, 1424, 1426, 1427, 1422, 1423, - 1427, 1426, 1429, 1430, 1433, 1433, 1432, 1424, 1430, 1432, - 1435, 1429, 1434, 1431, 1440, 1435, 1427, 1438, 1434, 1436, - 1436, 1437, 1437, 1438, 1439, 1441, 1442, 1440, 1443, 1439, - 1444, 1445, 1446, 1444, 1447, 1448, 1449, 1445, 1446, 1447, - 1453, 1448, 1450, 1441, 1454, 1442, 1452, 1450, 1443, 1451, - 1451, 1452, 1455, 1456, 1457, 1460, 1461, 1458, 1453, 1449, - 1459, 1460, 1462, 1463, 1454, 1464, 1470, 1456, 1457, 1458, - 1466, 1466, 1455, 1459, 1467, 1468, 1461, 1463, 1469, 1469, - 1468, 1470, 1462, 1471, 1472, 1473, 1464, 1474, 1476, 1475, + 1426, 1421, 1427, 1436, 1435, 1445, 1436, 1418, 1429, 1423, + 1428, 1422, 1426, 1428, 1429, 1430, 1428, 1433, 1431, 1434, + 1430, 1431, 1427, 1445, 1434, 1446, 1433, 1438, 1428, 1435, + 1437, 1437, 1442, 1438, 1439, 1440, 1440, 1431, 1442, 1439, + 1441, 1441, 1443, 1444, 1446, 1447, 1448, 1443, 1449, 1448, + 1451, 1450, 1452, 1453, 1449, 1451, 1444, 1450, 1452, 1454, + 1455, 1455, 1456, 1457, 1454, 1447, 1458, 1456, 1459, 1460, + 1461, 1464, 1465, 1462, 1463, 1466, 1453, 1464, 1468, 1467, + 1471, 1457, 1476, 1460, 1461, 1462, 1458, 1463, 1459, 1470, + 1470, 1472, 1465, 1467, 1474, 1466, 1472, 1473, 1473, 1468, - 1477, 1478, 1482, 1486, 1467, 1476, 1474, 1471, 1480, 1477, - 1484, 1484, 1477, 1473, 1475, 1486, 1483, 1478, 1472, 1483, - 1485, 1485, 1487, 1480, 1489, 1489, 1488, 1482, 1480, 1488, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1492, 1493, 1497, - 1487, 1503, 1500, 1490, 1502, 1496, 1499, 1498, 1500, 1504, - 1491, 1495, 1505, 1494, 1503, 1499, 1498, 1506, 1497, 1498, - 1501, 1501, 1507, 1510, 1502, 1511, 1505, 1504, 1512, 1512, - 1513, 1514, 1515, 1506, 1507, 1516, 1516, 1515, 1519, 1518, - 1514, 1520, 1517, 1511, 1518, 1521, 1513, 1522, 1510, 1525, - 1516, 1517, 1522, 1522, 1517, 1524, 1519, 1526, 1529, 0, + 1471, 1475, 1477, 1478, 1479, 1482, 1476, 1480, 1484, 1474, + 1486, 0, 1478, 1481, 1480, 1475, 1488, 1488, 1491, 1479, + 1477, 1482, 1481, 1484, 1487, 1481, 1490, 1487, 1484, 1489, + 1489, 1492, 1493, 1493, 1492, 1486, 1491, 1494, 1490, 1495, + 1496, 1497, 1498, 1499, 1500, 1496, 1497, 1501, 1502, 1504, + 1494, 1505, 1505, 1500, 1503, 1504, 1506, 1502, 1495, 1499, + 1502, 1498, 1507, 1503, 1508, 1509, 1501, 1510, 1511, 1514, + 1515, 1516, 1516, 1517, 1574, 1507, 1506, 1518, 1574, 1509, + 1511, 1523, 1508, 1510, 1521, 1519, 1518, 1524, 1515, 1517, + 1519, 1520, 1520, 1521, 1514, 1522, 1521, 1525, 1526, 1523, - 1527, 1528, 1520, 1521, 1525, 1527, 1531, 1528, 1532, 1524, - 1530, 1530, 1531, 1532, 1533, 1534, 1529, 1536, 1537, 1526, - 1533, 1534, 1538, 1539, 1540, 1541, 1543, 1540, 1538, 1545, - 1546, 1541, 1537, 1540, 1543, 1547, 1539, 1536, 1548, 1549, - 1550, 1551, 1552, 1547, 1553, 1553, 1556, 1548, 1545, 1546, - 1558, 1554, 1549, 1550, 1555, 1551, 1552, 1554, 1559, 1556, - 1555, 1557, 1557, 1560, 1561, 1562, 1553, 1563, 1564, 1565, - 1558, 1562, 1567, 1567, 1568, 1569, 1559, 1561, 1570, 1569, - 1571, 1572, 1560, 1570, 1564, 1571, 1572, 1565, 1573, 1563, - 1574, 1576, 1577, 1577, 1568, 1578, 1579, 1573, 1580, 1581, + 1522, 1530, 1528, 1526, 1526, 1529, 1520, 1531, 1524, 1533, + 1541, 1532, 1531, 1534, 1534, 1525, 1528, 1532, 1535, 1537, + 1529, 1536, 1538, 1530, 1535, 1539, 1536, 1533, 1538, 1542, + 1541, 1539, 1543, 1537, 1544, 1546, 1545, 1550, 1543, 1545, + 1548, 1546, 1551, 1542, 1552, 1545, 1553, 1544, 1548, 1554, + 1555, 1556, 1552, 1557, 1559, 1553, 1550, 1558, 1558, 1561, + 1559, 1551, 1554, 1555, 1560, 1556, 1563, 1557, 1562, 1562, + 1560, 1564, 1561, 1565, 1566, 1567, 1568, 1569, 1570, 1558, + 1573, 1567, 1572, 1572, 1579, 1575, 1563, 1566, 1581, 1564, + 1575, 1583, 1565, 1569, 1576, 1578, 1570, 1577, 1568, 1576, - 1581, 1582, 1583, 1586, 1584, 1587, 1576, 1585, 1579, 1583, - 1590, 1589, 1588, 1574, 1578, 1582, 1584, 1580, 1588, 1585, - 1591, 1593, 1586, 1589, 1593, 1587, 1591, 1597, 1590, 1592, - 1592, 1594, 1594, 1596, 1598, 1600, 1597, 1601, 1596, 1601, - 1598, 1599, 1599, 1602, 1603, 1604, 1602, 1600, 1605, 1607, - 1606, 1608, 1611, 1609, 1607, 1610, 1613, 1611, 1615, 1619, - 1608, 0, 1612, 1615, 1603, 1609, 1605, 1604, 1606, 1614, - 1610, 1612, 1616, 1618, 1614, 1621, 1613, 1617, 1617, 1618, - 1619, 1614, 1622, 1623, 1612, 1625, 1624, 1616, 1624, 1626, - 1626, 1627, 1627, 1629, 1621, 1628, 1628, 1632, 1622, 1625, + 1573, 1584, 1577, 1581, 1578, 1582, 1582, 1579, 1585, 1587, + 1583, 1586, 1586, 1584, 1588, 1591, 1589, 1590, 1592, 1593, + 1594, 1588, 1595, 1587, 1596, 1593, 1601, 1585, 1589, 1590, + 1596, 1601, 1594, 1605, 1591, 1597, 1597, 1602, 1592, 1598, + 1595, 1603, 1598, 1599, 1599, 1605, 1602, 1603, 1604, 1604, + 1606, 1607, 1606, 1608, 1607, 1609, 1610, 1611, 1612, 1613, + 1614, 1615, 1616, 1612, 1618, 1620, 1621, 1616, 1613, 1617, + 1620, 1626, 1614, 1608, 1610, 1611, 1615, 1609, 1617, 1624, + 1619, 1621, 1622, 1622, 1618, 1619, 1627, 1623, 1628, 1630, + 1626, 1617, 1619, 1623, 1629, 1634, 1629, 1631, 1631, 1637, - 1633, 1625, 1640, 1623, 1630, 1630, 1631, 1631, 1634, 1634, - 1635, 1636, 1637, 1629, 1635, 1637, 1639, 1636, 1632, 1641, - 1640, 1633, 1639, 1642, 1643, 1641, 1646, 1643, 1644, 1644, - 1645, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1653, 1654, - 1660, 1657, 1650, 1653, 1653, 1647, 1647, 1647, 1642, 1655, - 1656, 1655, 1647, 1654, 1648, 1649, 1657, 1651, 1658, 1659, - 1660, 1656, 1661, 1663, 1658, 1662, 1662, 1665, 1659, 1664, - 1664, 1666, 1667, 1667, 1668, 1668, 1669, 1672, 1672, 1673, - 1677, 1674, 1676, 1661, 1679, 1679, 1678, 1665, 1680, 1663, - 1674, 1676, 1678, 1666, 1683, 1681, 1669, 1684, 1682, 1685, + 1624, 1638, 1627, 1630, 0, 1630, 1632, 1632, 1628, 1633, + 1633, 1635, 1635, 1636, 1636, 1634, 1639, 1639, 1641, 1640, + 1637, 1644, 1638, 1640, 1641, 1642, 1645, 1644, 1642, 1646, + 1647, 1648, 1649, 1649, 1648, 1646, 1650, 1650, 1652, 1651, + 1653, 1654, 1655, 1656, 1645, 1651, 1665, 1660, 1655, 1660, + 1652, 1652, 1652, 1658, 1659, 1647, 1661, 1652, 1658, 1658, + 1653, 1654, 1662, 1656, 1663, 1664, 1665, 1661, 1659, 1666, + 1663, 1667, 1667, 1668, 1664, 1669, 1669, 1662, 1670, 1671, + 1672, 1672, 1673, 1673, 1674, 1677, 1677, 1678, 1679, 1682, + 1666, 1681, 1684, 1684, 1685, 1689, 1683, 1679, 1670, 1668, - 1685, 1677, 1686, 1683, 1673, 1682, 1687, 1689, 1690, 1680, - 1681, 1691, 1689, 1692, 1690, 1693, 1695, 1695, 1694, 1698, - 1692, 1693, 1687, 1684, 1694, 1696, 1697, 1699, 1686, 1700, - 1696, 1691, 1702, 1701, 1703, 1697, 1701, 1704, 1704, 1698, - 1708, 1700, 1705, 1706, 1707, 1711, 1699, 1709, 1705, 1706, - 1702, 1709, 1712, 1713, 1715, 1708, 1714, 1714, 1713, 1718, - 1703, 1716, 1719, 1720, 1707, 1711, 1719, 1709, 1721, 1720, - 1722, 1722, 1724, 1715, 1712, 1723, 1716, 1721, 1718, 1723, - 1725, 1725, 1726, 1724, 1727, 1728, 1729, 1730, 1724, 1731, - 1732, 1729, 1734, 1733, 1735, 1735, 1732, 1734, 1727, 1736, + 1681, 1671, 1683, 1686, 1674, 1688, 1687, 1690, 1690, 1691, + 1682, 1692, 1678, 1687, 1688, 1685, 1696, 1694, 1686, 1695, + 1698, 1689, 1694, 1697, 1701, 1695, 1698, 1692, 1699, 1701, + 1697, 1700, 1700, 1702, 1699, 1691, 1696, 1703, 1705, 1704, + 1706, 1707, 1702, 1706, 1708, 1709, 1709, 1710, 1711, 1712, + 1705, 1713, 1714, 1710, 1711, 1716, 1714, 1703, 1704, 1707, + 1717, 1720, 1718, 1719, 1719, 1723, 1713, 1718, 1721, 1712, + 1708, 0, 1714, 1724, 1732, 1716, 1727, 1724, 1725, 1725, + 1720, 1726, 1717, 1721, 1723, 1727, 1729, 1726, 1728, 1728, + 1729, 1730, 1731, 1731, 1733, 1732, 1734, 1736, 1735, 1737, - 1736, 1737, 1739, 1726, 1728, 1737, 1740, 1730, 1733, 1731, - 1741, 1739, 1742, 1742, 1744, 1744, 1748, 1740, 1745, 1746, - 1747, 1750, 1740, 1745, 1745, 1746, 1747, 1749, 1751, 1753, - 1741, 1754, 1749, 1750, 1751, 1754, 1755, 1756, 1757, 1758, - 1759, 1753, 1748, 1760, 1757, 1762, 1759, 1763, 1755, 1764, - 1766, 1767, 1767, 1766, 1764, 1760, 1770, 1762, 1768, 1768, - 0, 1758, 1756, 1769, 1769, 1771, 1763, 1772, 1775, 1773, - 1777, 1771, 1774, 1772, 1773, 1777, 1770, 1775, 1774, 1779, - 1780, 1783, 1779, 1781, 1781, 1784, 1785, 1786, 1786, 1787, - 1788, 1785, 1780, 1783, 1789, 1788, 1791, 1784, 1787, 1789, + 1738, 1739, 1730, 1735, 1740, 1747, 1738, 1730, 1733, 1740, + 1741, 1741, 1742, 1742, 1743, 1734, 1739, 1736, 1743, 1737, + 1745, 1746, 1748, 1748, 1752, 1747, 1750, 1750, 1751, 1745, + 1752, 1754, 1746, 1751, 1751, 1753, 1756, 1746, 1755, 1757, + 1759, 1753, 1760, 1755, 1761, 1757, 1760, 1762, 1756, 1763, + 1766, 1764, 1759, 1765, 1768, 1763, 1761, 1754, 1769, 1765, + 1770, 1772, 1766, 1776, 1772, 1770, 1768, 1773, 1773, 1774, + 1774, 0, 1762, 1764, 1775, 1775, 1777, 1769, 1778, 1781, + 1779, 1780, 1777, 1776, 1778, 1779, 1783, 1780, 1781, 1785, + 1786, 1783, 1785, 1787, 1787, 1789, 1790, 1793, 1791, 1792, - 1790, 1790, 1792, 1793, 1794, 1795, 1798, 1796, 1797, 1795, - 1799, 1792, 1796, 1800, 1797, 1801, 1791, 1804, 1805, 1799, - 1809, 1793, 1808, 1794, 1798, 1803, 1803, 1805, 0, 1801, - 1807, 1800, 1806, 1806, 1808, 1804, 1811, 1803, 1810, 1807, - 1817, 1809, 1818, 1810, 1814, 1814, 1820, 1816, 1821, 1811, - 1816, 1822, 1823, 1824, 1824, 1830, 1817, 1822, 1818, 1826, - 1826, 1820, 1821, 1825, 1827, 1825, 1829, 1831, 1831, 1823, - 1832, 1833, 1827, 1829, 1834, 1830, 1835, 1836, 1837, 1832, - 1838, 1839, 1841, 1844, 1842, 1845, 1834, 1839, 1835, 1836, - 1843, 1843, 1833, 1847, 1846, 1838, 1842, 1846, 1847, 1848, + 1792, 1797, 1786, 1791, 1794, 1795, 1793, 1789, 1790, 1794, + 1795, 1796, 1796, 1798, 1799, 1800, 1801, 1804, 1802, 1803, + 1801, 1797, 1798, 1802, 1805, 1803, 1806, 1807, 1809, 1809, + 1810, 1814, 1799, 1805, 1800, 1804, 1811, 1812, 1812, 1815, + 1809, 1807, 1813, 1814, 1806, 1811, 1817, 1816, 1810, 1820, + 1820, 1813, 1816, 1822, 1823, 1824, 1822, 1826, 1828, 1817, + 1815, 1827, 1829, 1836, 1828, 1830, 1830, 1831, 1833, 1831, + 1823, 1824, 1826, 1832, 1832, 1827, 1833, 1835, 1838, 1829, + 1837, 1837, 1839, 1836, 1835, 1840, 1841, 1838, 1842, 1843, + 1844, 1847, 1848, 1845, 1849, 1849, 1850, 1840, 1841, 1845, - 1839, 1844, 1841, 1850, 1837, 1845, 1852, 1851, 1850, 1851, - 1853, 1854, 1856, 1858, 1859, 1853, 1860, 1862, 1854, 1848, - 1861, 1856, 1861, 1859, 1852, 1864, 1865, 1864, 1860, 1866, - 1866, 1858, 1867, 1868, 1870, 1869, 1862, 1869, 1868, 1870, - 1865, 1871, 1872, 1873, 1874, 1877, 1871, 1875, 1876, 1879, - 1874, 1880, 1875, 1877, 1881, 1881, 1882, 1882, 1867, 1883, - 1872, 1876, 1884, 1873, 1885, 1880, 1886, 1887, 1879, 1887, - 1885, 1886, 1888, 1889, 1883, 1890, 1890, 1892, 1892, 1891, - 1896, 1889, 1884, 1893, 1893, 1894, 1900, 1895, 1898, 1889, - 1888, 1891, 1895, 1899, 1894, 1899, 1901, 1898, 1896, 1902, + 1842, 1851, 1853, 1839, 1848, 1844, 1852, 1853, 1854, 1852, + 0, 1847, 1845, 1856, 1850, 1843, 1858, 1857, 1856, 1857, + 1859, 1851, 1860, 1862, 1864, 1859, 1865, 1866, 1854, 1860, + 1868, 1867, 1862, 1867, 1858, 1865, 1870, 1871, 1870, 1866, + 1872, 1872, 1864, 1873, 1875, 1874, 1875, 1876, 1877, 1868, + 1874, 1871, 1876, 1877, 1878, 1879, 1880, 1882, 1881, 1883, + 1885, 1889, 1880, 1881, 1886, 1887, 1887, 1883, 1890, 1873, + 1882, 1891, 1878, 1888, 1888, 1879, 1889, 1891, 1886, 1885, + 1892, 1893, 1894, 1893, 1897, 1892, 1895, 1902, 1890, 1896, + 1896, 1898, 1898, 1906, 1895, 1900, 1897, 1899, 1899, 1904, - 1898, 1901, 1901, 1903, 1905, 1906, 1907, 1900, 1902, 1909, - 1906, 1907, 1910, 1913, 1911, 1903, 1905, 1912, 1912, 1914, - 1915, 1916, 1909, 1911, 1917, 1921, 1919, 1933, 1920, 1922, - 1930, 1913, 1910, 1924, 1922, 1916, 1915, 1914, 1919, 1917, - 1920, 1923, 1924, 1927, 1929, 1921, 1923, 1932, 1931, 1927, - 1929, 1934, 1933, 1930, 1935, 1935, 1938, 1936, 1937, 1937, - 1934, 1941, 1927, 1931, 1939, 1932, 1936, 1940, 1939, 0, - 1947, 1942, 1940, 1943, 1941, 1938, 1942, 1942, 1944, 1943, - 1945, 1946, 1952, 1945, 1944, 1950, 1950, 1951, 1951, 1946, - 1947, 1952, 1953, 1953, 1954, 1954, 1955, 1956, 1957, 1964, + 1894, 1901, 1895, 1917, 1900, 1902, 1901, 1905, 1904, 1905, + 1907, 1904, 1908, 1909, 1906, 1907, 1907, 1910, 1912, 1916, + 1913, 1914, 1909, 1917, 1908, 1913, 1914, 1918, 1920, 1910, + 1912, 1921, 1916, 1919, 1919, 1922, 1918, 1928, 1923, 1924, + 1929, 1926, 1930, 1927, 1937, 1929, 1920, 1930, 1938, 1921, + 1931, 1922, 1923, 1926, 1924, 1927, 1934, 1928, 1936, 1931, + 1939, 1940, 1934, 1938, 1936, 1941, 1945, 1937, 1942, 1942, + 1943, 1944, 1944, 1946, 1941, 1934, 1947, 1946, 1939, 1943, + 1948, 1947, 1949, 1950, 1951, 1945, 1940, 1949, 1949, 1950, + 1951, 1952, 1953, 1948, 1952, 1954, 1957, 1957, 1958, 1958, - 1958, 1965, 1951, 1964, 1957, 1958, 1959, 1959, 1955, 1960, - 1960, 1961, 1962, 1951, 1968, 1956, 1961, 1969, 1962, 1966, - 1970, 1965, 1969, 1966, 1972, 1971, 1973, 1975, 1976, 1972, - 1974, 1977, 1979, 1976, 1978, 1978, 1979, 1980, 1982, 1968, - 1971, 1984, 1983, 1970, 1973, 1981, 1974, 1975, 1986, 1987, - 1981, 1985, 1980, 1977, 1983, 1990, 1985, 1988, 1988, 1991, - 1984, 1986, 1992, 1990, 1982, 1993, 1994, 1987, 1995, 2000, - 1996, 1997, 1998, 2001, 2001, 2004, 2002, 2009, 1991, 2002, - 2040, 1992, 2003, 1997, 2000, 2005, 2040, 1995, 1993, 2004, - 1994, 1996, 2009, 1998, 2010, 2003, 2006, 2006, 2005, 2007, + 1953, 1959, 1960, 1960, 1961, 1961, 1962, 1963, 1964, 1975, + 1959, 1965, 1968, 1958, 1964, 1954, 1965, 1968, 1962, 1966, + 1966, 1967, 1967, 1969, 1958, 1963, 1971, 1972, 1973, 1969, + 1971, 1976, 1973, 1977, 1975, 1978, 1976, 1979, 1981, 1980, + 1982, 1983, 1979, 1984, 1985, 1985, 1983, 1972, 1986, 1987, + 1978, 1989, 1986, 1988, 1981, 1990, 1977, 1980, 1988, 1991, + 1982, 1992, 1993, 1994, 1987, 1984, 1992, 1990, 1995, 1995, + 1998, 1997, 1999, 2000, 2001, 1993, 2002, 1989, 1991, 1997, + 2003, 1994, 2004, 2005, 2007, 2008, 2008, 2009, 2011, 1998, + 2009, 1999, 2010, 2012, 2004, 2002, 2000, 0, 2001, 2007, - 2007, 2008, 2008, 2011, 2011, 2012, 2014, 2010, 2013, 2013, - 2016, 2014, 2017, 2018, 2012, 2016, 2019, 2012, 2020, 2020, - 2021, 2021, 2022, 2023, 2023, 2024, 2025, 2025, 2019, 2026, - 2027, 2030, 2017, 2018, 2032, 2027, 2028, 2028, 2029, 2029, - 2031, 2022, 2033, 2024, 2026, 2030, 2035, 2037, 2032, 2031, - 2039, 2035, 2036, 2036, 2038, 2038, 2041, 2042, 2042, 2041, - 2044, 2033, 2043, 2043, 2046, 2045, 2037, 2049, 2039, 2047, - 2047, 2050, 2052, 2042, 2051, 2060, 2052, 2053, 2053, 2044, - 2045, 2054, 2056, 2046, 2057, 2055, 2061, 2049, 2062, 2051, - 2055, 2059, 2059, 2061, 2050, 2060, 2063, 2056, 2064, 2057, + 2016, 2003, 2011, 2017, 2005, 2010, 2012, 2013, 2013, 2014, + 2014, 2015, 2015, 2018, 2018, 2016, 2017, 2019, 2020, 2020, + 2021, 2024, 2023, 2025, 2026, 2021, 2019, 2023, 2029, 2019, + 2027, 2027, 2028, 2028, 2030, 2030, 2026, 2031, 2032, 2032, + 2034, 2024, 2033, 2025, 2037, 2034, 2039, 2029, 2035, 2035, + 2036, 2036, 2038, 2040, 2042, 2031, 2044, 2033, 2037, 2042, + 2039, 2038, 2043, 2043, 2045, 2045, 2046, 2047, 2048, 2049, + 2049, 2048, 2040, 2047, 2051, 2044, 2050, 2050, 2053, 2052, + 2054, 2054, 2056, 2057, 2046, 2049, 2058, 2059, 2060, 2060, + 2061, 2059, 2063, 2051, 2052, 2062, 2064, 2053, 2066, 2066, - 2054, 2065, 2062, 2066, 2066, 2068, 2067, 2068, 2069, 2071, - 2074, 2069, 2072, 2073, 2063, 2067, 2064, 2072, 2073, 2075, - 2076, 2071, 2078, 2082, 2077, 2080, 2069, 2065, 2069, 2077, - 2080, 2081, 2075, 2083, 2084, 2074, 2081, 2085, 2082, 2083, - 2086, 2076, 2087, 2085, 2088, 2086, 2089, 2087, 2078, 2090, - 2095, 2091, 2090, 2092, 2093, 2084, 2094, 2100, 0, 2089, - 2091, 2096, 2092, 2093, 2095, 2094, 2097, 2096, 2108, 2088, - 2098, 2102, 2097, 2104, 2098, 2103, 2103, 2100, 2106, 2104, - 2102, 2105, 2105, 2109, 2108, 2110, 2110, 2111, 2112, 2114, - 2105, 2115, 2117, 2116, 2121, 2123, 2123, 2112, 2106, 2109, + 2062, 2058, 2056, 2067, 2069, 2068, 2057, 2063, 2070, 2061, + 2071, 2064, 2068, 2072, 2073, 2073, 2074, 2075, 2069, 2075, + 2079, 2082, 2086, 2067, 2076, 2074, 2070, 2076, 2071, 2078, + 2083, 2080, 2079, 2081, 2084, 2078, 2080, 2092, 2081, 2072, + 2085, 2090, 2076, 2083, 2076, 2085, 2082, 2088, 2086, 2089, + 2096, 2091, 2088, 2093, 2089, 2084, 2090, 2091, 2092, 2093, + 2094, 2095, 2099, 2097, 2098, 2094, 2095, 2098, 2100, 2101, + 2102, 2099, 2103, 2108, 2104, 2096, 2097, 2100, 2101, 2102, + 2104, 2105, 2110, 2116, 2106, 2114, 2103, 2105, 2106, 2111, + 2111, 2110, 2112, 2108, 2113, 2113, 2117, 2120, 2112, 2116, - 2106, 2114, 2111, 2119, 2117, 2120, 2119, 2115, 2116, 2122, - 2120, 2124, 2124, 2128, 2121, 2126, 2126, 2127, 2128, 2129, - 2127, 2122, 2130, 2131, 2131, 2129, 2132, 2134, 2130, 2133, - 2133, 2135, 2136, 2137, 2137, 2138, 2139, 2140, 2147, 2134, - 2132, 2138, 2140, 2142, 0, 2135, 2143, 2142, 2146, 2143, - 2139, 2136, 2144, 2144, 2145, 2150, 2148, 2146, 2147, 2145, - 2148, 2149, 2149, 2153, 2152, 2154, 2155, 2156, 2150, 2152, - 2157, 2156, 2158, 2159, 2161, 2160, 2166, 2158, 2163, 2159, - 2155, 2160, 2164, 2153, 2166, 2154, 2167, 2164, 2167, 2165, - 2157, 2170, 2161, 2173, 2163, 2165, 2171, 2171, 2172, 2174, + 2118, 2118, 2119, 2113, 2122, 2114, 2120, 2114, 2123, 2125, + 2124, 2127, 2117, 2128, 2127, 2129, 2122, 2119, 2128, 2130, + 0, 2125, 2131, 2131, 2123, 2124, 2132, 2132, 2134, 2134, + 2135, 2130, 2136, 2135, 2137, 2129, 2138, 2136, 2139, 2139, + 2137, 2140, 2138, 2141, 2141, 2142, 2143, 2144, 2145, 2145, + 2146, 2147, 2155, 2148, 0, 2140, 2146, 2142, 2148, 2150, + 2143, 2151, 2154, 2150, 2151, 2147, 2144, 2152, 2152, 2153, + 2158, 2154, 2155, 2156, 2153, 2157, 2157, 2156, 2161, 2160, + 2162, 2163, 2164, 2158, 2160, 2165, 2164, 2166, 2167, 2169, + 2168, 2174, 2166, 2171, 2167, 2163, 2168, 2172, 2161, 2174, - 2174, 2172, 2176, 2177, 2178, 2170, 2176, 2179, 2179, 2177, - 2185, 2180, 2183, 2183, 2188, 2187, 2178, 2191, 2192, 2173, - 2180, 2193, 2191, 2195, 2195, 2199, 2193, 2194, 2185, 2187, - 2188, 2199, 2194, 2197, 2197, 2200, 2200, 2201, 2202, 2205, - 2203, 2209, 2206, 2210, 2192, 2203, 2207, 2207, 2211, 2210, - 2209, 2216, 2212, 2201, 2206, 2214, 2214, 2217, 2205, 2215, - 2202, 2222, 2215, 2219, 2219, 2223, 2211, 2212, 2220, 2220, - 2216, 2221, 2224, 2226, 2223, 2217, 2221, 2224, 2225, 2222, - 2225, 2227, 2228, 2229, 2230, 2231, 0, 2226, 2229, 2237, - 2231, 2232, 2232, 2236, 2228, 2227, 2233, 2233, 2234, 2234, + 2162, 2175, 2172, 2175, 2173, 2165, 2178, 2169, 2181, 2171, + 2173, 2179, 2179, 2180, 2182, 2182, 2180, 2184, 2185, 2186, + 2178, 2184, 2187, 2187, 2185, 2193, 2188, 2191, 2191, 2196, + 2195, 2186, 2199, 2200, 2181, 2188, 2201, 2199, 2203, 2203, + 2207, 2201, 2202, 2193, 2195, 2196, 2207, 2202, 2205, 2205, + 2208, 2208, 2209, 2210, 2213, 2211, 2217, 2214, 2218, 2200, + 2211, 2215, 2215, 2219, 2218, 2217, 2224, 2220, 2209, 2214, + 2222, 2222, 2225, 2213, 2223, 2210, 2230, 2223, 2227, 2227, + 2231, 2219, 2220, 2228, 2228, 2224, 2229, 2232, 2234, 2231, + 2225, 2229, 2232, 2233, 2230, 2233, 2235, 2236, 2237, 2238, - 2235, 2235, 2241, 2238, 2230, 2236, 2242, 2237, 2238, 2239, - 2239, 2240, 2240, 2243, 2241, 2244, 2245, 2245, 2242, 2246, - 2247, 2247, 2248, 2248, 2249, 2250, 2253, 2251, 2252, 2255, - 2256, 2244, 2259, 2243, 2251, 2249, 2254, 2250, 2246, 2258, - 2252, 2254, 2257, 2257, 2260, 2262, 2253, 2261, 2258, 2255, - 2256, 2263, 2264, 2264, 2265, 2266, 2267, 2269, 2259, 2270, - 2261, 2271, 2274, 2265, 2260, 2263, 2273, 2274, 0, 2262, - 2266, 2267, 2275, 2272, 2283, 2269, 2272, 2275, 2276, 2276, - 2273, 2270, 2277, 2277, 2271, 2278, 2278, 2280, 2280, 2282, - 2282, 2284, 2283, 2285, 2287, 2288, 2289, 2290, 2291, 2292, + 2239, 2240, 2234, 2237, 2241, 2241, 2240, 2242, 2242, 2236, + 2235, 2243, 2243, 2244, 2244, 2245, 2246, 2247, 2250, 2238, + 2239, 2251, 2247, 2248, 2248, 2249, 2249, 2245, 2252, 2253, + 2250, 2254, 2254, 2251, 2246, 2255, 2256, 2256, 2257, 2257, + 2258, 2259, 2260, 2261, 2262, 2253, 2264, 2263, 2252, 2260, + 2265, 2258, 2263, 2259, 2255, 2261, 2266, 2266, 2267, 2268, + 2269, 2270, 2271, 2272, 2262, 2278, 2264, 2267, 2273, 2273, + 2265, 2279, 2274, 2275, 2270, 2276, 2280, 2272, 2282, 2281, + 2269, 2274, 2281, 2278, 2283, 2268, 2271, 0, 2275, 2283, + 2276, 2284, 2282, 2279, 2285, 2285, 2284, 2286, 2286, 2280, - 2294, 2293, 2284, 2293, 2295, 2296, 2300, 2291, 2297, 2297, - 2299, 2299, 2285, 2288, 2287, 2301, 2306, 2290, 2289, 2292, - 2294, 2304, 2295, 2296, 2301, 2302, 2302, 2307, 2300, 2308, - 2304, 2305, 2305, 2309, 2306, 2310, 2308, 2311, 2312, 2313, - 2314, 2314, 2315, 2315, 2316, 2307, 2317, 2318, 2309, 2319, - 2316, 2320, 2321, 2310, 2312, 2311, 2320, 2322, 2313, 2324, - 2323, 2324, 2318, 2329, 2317, 2323, 2325, 2325, 2319, 2326, - 2331, 2326, 2321, 2327, 2327, 2332, 2333, 2322, 2334, 2331, - 2335, 2336, 2329, 2337, 2340, 2335, 2341, 2344, 2333, 2341, - 2342, 2342, 2343, 2346, 2332, 2345, 2345, 2346, 2334, 2348, + 2287, 2287, 2289, 2289, 2291, 2291, 2292, 2293, 2294, 2296, + 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2302, 2293, 2304, + 2305, 2309, 2300, 0, 2292, 2306, 2306, 2294, 2297, 2296, + 2308, 2308, 2299, 2298, 2301, 2310, 2303, 2304, 2305, 2311, + 2311, 2313, 2315, 2309, 2310, 2314, 2314, 2316, 2317, 2318, + 2313, 2319, 2320, 2325, 2322, 2317, 2321, 2323, 2323, 2325, + 2315, 2324, 2324, 2326, 2318, 2316, 2328, 2327, 2330, 2319, + 2320, 2329, 2321, 2322, 2331, 2332, 2329, 2333, 2338, 2333, + 2332, 2326, 2327, 2334, 2334, 2328, 2340, 2335, 2330, 2335, + 2336, 2336, 2341, 2342, 2331, 2340, 2343, 2338, 2344, 2345, - 2351, 2336, 2337, 2353, 2340, 2344, 2349, 2343, 2350, 2350, - 2349, 2354, 2355, 2351, 2348, 2356, 2356, 2358, 2353, 2359, - 2360, 2361, 2361, 2362, 2360, 2363, 2363, 2365, 2359, 2358, - 2364, 2354, 2355, 2366, 2367, 2364, 2365, 2368, 2368, 2373, - 2373, 2374, 2362, 2375, 2375, 2376, 2367, 2377, 2378, 2366, - 2379, 2380, 2380, 2381, 2383, 2383, 2386, 2378, 2376, 2379, - 2377, 2386, 2387, 2374, 2388, 2389, 2390, 2387, 2381, 2391, - 2389, 2392, 2395, 2393, 2390, 2398, 2401, 2396, 2388, 2397, - 2392, 2393, 2396, 2401, 2397, 2399, 2399, 2395, 2391, 2402, - 2398, 2400, 2400, 2403, 2402, 2404, 2405, 2408, 2406, 2407, + 2352, 2346, 2349, 2344, 2350, 2342, 2353, 2350, 2351, 2351, + 2355, 2341, 2354, 2354, 2355, 2352, 2343, 2357, 2360, 2345, + 2346, 2358, 2349, 2362, 2353, 2358, 2359, 2359, 2363, 2364, + 2367, 2360, 2357, 2365, 2365, 2368, 2369, 2371, 2362, 2375, + 2369, 2377, 2367, 2384, 2368, 2370, 2370, 2373, 2363, 2364, + 2372, 2372, 2373, 2374, 2376, 2375, 2371, 2378, 2378, 2383, + 2383, 2377, 2374, 2385, 2385, 2384, 2376, 2386, 2387, 2388, + 2389, 2390, 2390, 2391, 2393, 2393, 2398, 2396, 2388, 2389, + 2386, 2387, 2396, 2401, 2397, 2400, 2399, 2402, 2391, 2397, + 2398, 2399, 2403, 2400, 2405, 2408, 2402, 2413, 2406, 2407, - 2407, 2409, 2405, 2406, 2410, 2410, 2409, 2411, 2411, 2414, - 0, 2403, 2408, 2404, 2415, 2415, 2416, 2426, 2417, 2416, - 2418, 2419, 2414, 2417, 2417, 2418, 2419, 2420, 2421, 2422, - 2423, 2424, 2421, 2420, 2422, 2425, 2427, 2430, 2426, 2423, - 2429, 2428, 2427, 2425, 2435, 2429, 2424, 2428, 2432, 2430, - 2437, 2433, 2438, 2432, 2433, 2437, 2435, 2438, 2439, 2440, - 2441, 2442, 2443, 2443, 2444, 2447, 2448, 2453, 2449, 2441, - 2442, 2451, 2440, 2444, 2450, 2450, 2439, 2454, 2454, 2452, - 2455, 2457, 2453, 2459, 2447, 2460, 2448, 2449, 2452, 2460, - 2451, 2461, 2461, 2462, 2463, 2464, 2457, 0, 2465, 2455, + 2403, 2414, 2401, 2406, 2407, 2409, 2409, 2410, 2410, 2405, + 2408, 2411, 2412, 2418, 2415, 2413, 2416, 2412, 2411, 2414, + 2415, 2416, 2417, 2417, 2419, 2420, 2420, 2424, 2418, 2419, + 2421, 2421, 2425, 2425, 2426, 2436, 2427, 2426, 2428, 2429, + 2424, 2427, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, + 2431, 2430, 2432, 2435, 2437, 2440, 2436, 2433, 2439, 2438, + 2437, 2435, 2445, 2439, 2434, 2438, 2442, 2440, 2447, 2443, + 2448, 2442, 2443, 2447, 2445, 2448, 2449, 2450, 2451, 2452, + 2453, 2453, 2454, 2457, 2458, 2463, 2459, 2451, 2452, 2461, + 2450, 2454, 2460, 2460, 2449, 2464, 2464, 2462, 2465, 2467, - 2463, 2464, 2467, 2459, 2465, 2466, 2466, 2468, 2470, 2471, - 2467, 2473, 2468, 2474, 2475, 2473, 2478, 2470, 2462, 2477, - 2477, 2488, 2471, 2479, 2479, 2480, 2480, 2474, 2483, 2475, - 2482, 2482, 2483, 2484, 2478, 2486, 2486, 2489, 2484, 2490, - 2491, 2488, 2489, 2493, 2501, 2491, 2491, 2494, 2494, 2496, - 2496, 2490, 2497, 2497, 2498, 2499, 2503, 2498, 2504, 2504, - 2505, 2505, 2501, 2493, 2506, 2506, 2507, 2509, 2499, 2508, - 2508, 2510, 2511, 2512, 2513, 2513, 2503, 2518, 2514, 2512, - 2509, 2507, 2514, 2519, 2520, 2517, 2511, 2521, 2522, 2510, - 2517, 2517, 2523, 2521, 2522, 2524, 2525, 2525, 2533, 2524, + 2463, 2469, 2457, 2470, 2458, 2459, 2462, 2470, 2461, 2471, + 2471, 2472, 2473, 2474, 2467, 0, 2475, 2465, 2473, 2474, + 2477, 2469, 2475, 2476, 2476, 2478, 2480, 2481, 2477, 2483, + 2478, 2484, 2485, 2483, 2488, 2480, 2472, 2487, 2487, 2498, + 2481, 2489, 2489, 2490, 2490, 2484, 2493, 2485, 2492, 2492, + 2493, 2494, 2488, 2496, 2496, 2499, 2494, 2500, 2501, 2498, + 2499, 2502, 2504, 2501, 2501, 2505, 2505, 2507, 2507, 2500, + 2508, 2508, 2509, 2502, 2510, 2509, 2512, 2514, 2515, 2515, + 2516, 2516, 2504, 2517, 2517, 2518, 2520, 2510, 2519, 2519, + 2521, 2522, 2523, 2529, 2512, 2524, 2524, 2514, 2523, 2520, - 2518, 2528, 2530, 2519, 2520, 2531, 2528, 2535, 2531, 2534, - 2530, 2536, 2534, 2537, 2538, 2539, 2536, 2523, 2540, 2540, - 2544, 2541, 2543, 2533, 2535, 2535, 2547, 2542, 2553, 2539, - 2542, 2537, 2545, 2556, 2538, 2541, 2543, 2546, 2542, 2544, - 2545, 0, 2546, 2546, 2553, 2547, 2548, 2548, 2549, 2549, - 2550, 2550, 2551, 2551, 2552, 2552, 2554, 2555, 2557, 2556, - 2558, 2554, 2559, 2561, 2561, 2562, 2563, 2557, 2562, 2565, - 2565, 2566, 2567, 2567, 2568, 2570, 2570, 2555, 2566, 2568, - 2558, 2571, 2559, 2572, 2563, 2573, 2575, 2576, 2576, 2577, - 2571, 2578, 2572, 2577, 2573, 2579, 2580, 2582, 2581, 2583, + 2518, 2530, 2525, 2531, 2528, 2522, 2525, 2532, 2521, 2528, + 2528, 2533, 2534, 2532, 2535, 2544, 2529, 2533, 2535, 2536, + 2536, 2530, 2539, 2531, 2541, 2542, 2545, 2539, 2542, 2545, + 2546, 2547, 2541, 2548, 2549, 2550, 2547, 2534, 2551, 2551, + 2544, 2552, 2553, 2554, 2555, 2553, 2558, 2546, 2546, 2550, + 2556, 2548, 2567, 2553, 2549, 2552, 2557, 2554, 2556, 2559, + 2559, 2557, 2557, 2555, 2564, 2558, 2560, 2560, 2561, 2561, + 2562, 2562, 2563, 2563, 2565, 2566, 2568, 2569, 2567, 2565, + 2564, 2570, 2572, 2572, 2573, 2568, 2574, 2573, 2576, 2576, + 2586, 2577, 2578, 2578, 2579, 2566, 2582, 2569, 2577, 2579, - 2578, 2580, 2580, 2583, 2575, 2591, 2582, 2587, 2588, 2588, - 2579, 2581, 2587, 2590, 2590, 2592, 2593, 2595, 2596, 2591, - 2599, 2601, 2600, 2602, 2604, 2606, 2595, 2608, 2609, 2602, - 2596, 2600, 2608, 2609, 2593, 2611, 2604, 2610, 2610, 2620, - 2592, 2601, 2613, 2621, 2611, 2599, 2606, 2613, 2614, 2614, - 2616, 2616, 2614, 2617, 2617, 2618, 2618, 2619, 2622, 2620, - 2625, 2624, 2621, 2622, 2626, 2625, 2619, 2624, 2628, 2626, - 2627, 2627, 2629, 2630, 2631, 2632, 2633, 2637, 2630, 2634, - 2634, 2632, 2637, 2636, 2638, 2640, 2628, 2636, 2641, 2638, - 2639, 2639, 2631, 2629, 2642, 2644, 2644, 2646, 2647, 2649, + 2583, 2570, 2581, 2581, 2574, 2582, 2584, 2592, 2586, 2583, + 2587, 2587, 2588, 2589, 2590, 2584, 2588, 2593, 2591, 2603, + 2592, 2594, 2589, 2591, 2591, 2594, 2593, 2598, 2602, 2590, + 2599, 2599, 2598, 2601, 2601, 2604, 2606, 2606, 2607, 2608, + 2611, 2612, 2602, 2613, 2603, 2616, 2614, 2607, 2618, 2620, + 2612, 2608, 2614, 2604, 2620, 2621, 2707, 2616, 2622, 2622, + 2621, 2623, 2625, 2613, 2632, 2611, 2633, 2625, 2707, 2618, + 2623, 2626, 2626, 2628, 2628, 2626, 2629, 2629, 2630, 2630, + 2631, 2634, 2636, 2640, 2632, 2633, 2634, 2637, 2636, 2631, + 2638, 2641, 2637, 2639, 2639, 2638, 2643, 2642, 2644, 2645, - 2650, 2633, 2648, 2641, 2640, 2651, 2648, 2652, 2649, 2654, - 2646, 2647, 2653, 2656, 2642, 2652, 2650, 2653, 2655, 2655, - 2658, 2658, 2659, 2659, 2651, 2661, 2663, 2663, 2665, 2666, - 2671, 2667, 2656, 2668, 2672, 2654, 2670, 2670, 2668, 2673, - 2675, 2675, 2676, 2677, 2665, 2666, 2661, 2667, 2678, 2678, - 2671, 2681, 2684, 2682, 2693, 2683, 2676, 2672, 2673, 2682, - 2683, 2687, 2677, 2685, 2685, 2686, 2686, 2688, 2688, 2689, - 2690, 2681, 2691, 2693, 2684, 2695, 2692, 2694, 0, 2690, - 2689, 2687, 2692, 2696, 2696, 2697, 2702, 2688, 2697, 2694, - 2698, 2698, 2691, 2703, 2704, 2695, 2705, 2705, 2702, 2706, + 2652, 2640, 2642, 2648, 2644, 2646, 2646, 2648, 2649, 2654, + 2650, 2653, 2641, 2649, 2643, 2650, 2651, 2651, 2658, 2652, + 2656, 2656, 2659, 2660, 2645, 2661, 2653, 2660, 2662, 2654, + 2663, 2658, 2664, 2665, 2661, 2659, 2666, 2668, 2665, 2673, + 2664, 2667, 2667, 2677, 2662, 2670, 2670, 2671, 2671, 2663, + 2675, 2675, 2678, 2679, 2682, 2682, 2668, 2683, 2680, 2677, + 2673, 2684, 2666, 2680, 2685, 2687, 2687, 2688, 2678, 2679, + 2689, 2690, 2690, 2693, 2694, 2697, 2700, 2683, 2698, 2698, + 2694, 2688, 2695, 2685, 2684, 2699, 2699, 2695, 2702, 2689, + 2701, 2701, 2703, 2693, 2704, 2708, 2700, 2697, 2705, 2702, - 2704, 2707, 2706, 2708, 2710, 2711, 2712, 2707, 2713, 2710, - 2711, 2714, 2717, 2703, 2713, 2715, 2715, 2718, 2719, 2720, - 2722, 2708, 2721, 2721, 2717, 2712, 2728, 2723, 2714, 2714, - 2725, 2725, 2720, 2726, 2726, 2718, 2723, 2727, 2738, 2722, - 2728, 2729, 2727, 2719, 2730, 2730, 2729, 2731, 2731, 2732, - 2732, 2733, 2735, 2735, 2740, 2741, 2733, 2738, 2742, 2743, - 2743, 2745, 2745, 2747, 2746, 2748, 2749, 2749, 2750, 2750, - 2753, 2796, 2754, 2752, 2748, 2796, 2740, 2741, 2746, 2752, - 2742, 2755, 2762, 2747, 2758, 2758, 2755, 2760, 2760, 2761, - 2753, 2754, 2763, 2764, 2761, 2765, 2762, 2767, 2763, 2766, + 2706, 2703, 2709, 2709, 2705, 2710, 2711, 2711, 2710, 2715, + 2701, 2716, 2717, 0, 2704, 2708, 2718, 2718, 2717, 2706, + 2719, 2715, 2720, 2719, 2721, 2723, 2725, 2724, 2720, 2726, + 2723, 2716, 2724, 2727, 2730, 2726, 2728, 2728, 2731, 2732, + 2733, 2735, 2721, 2734, 2734, 2725, 2730, 2740, 2736, 2741, + 2727, 2727, 2740, 2733, 2738, 2738, 2731, 2736, 2739, 2739, + 2735, 2742, 2751, 2741, 2732, 2753, 2742, 2743, 2743, 2744, + 2744, 2745, 2745, 2746, 2748, 2748, 2754, 2755, 2746, 2756, + 2756, 2751, 2758, 2758, 2760, 2761, 2759, 2753, 2762, 2762, + 2763, 2763, 2766, 0, 2761, 2765, 2767, 2768, 2754, 2755, - 2766, 2769, 2767, 2765, 2770, 2764, 2771, 2772, 2773, 2775, - 2776, 2771, 2777, 2778, 2773, 2780, 2779, 2775, 2781, 2772, - 2782, 2769, 2783, 2785, 2770, 2786, 2790, 2783, 2785, 2776, - 2863, 2780, 2777, 2778, 2779, 2781, 2781, 2787, 2791, 2788, - 0, 2782, 2863, 2787, 2788, 2786, 2790, 2794, 2794, 2795, - 2795, 2791, 2800, 2800, 2802, 2802, 2803, 2803, 2806, 2803, - 2804, 2804, 2806, 2804, 2805, 2805, 2809, 2805, 2808, 2808, - 2813, 2810, 2814, 2815, 2816, 2816, 2819, 2821, 2815, 2820, - 2822, 2821, 2823, 0, 2809, 2810, 2820, 2825, 2830, 2822, - 2813, 2826, 2814, 2827, 2827, 2828, 2828, 2823, 2829, 2829, + 2759, 2765, 2768, 2775, 2760, 2771, 2771, 2773, 2773, 2774, + 2776, 2777, 2766, 2778, 2774, 2767, 2776, 2775, 2779, 2779, + 2780, 2778, 2782, 2777, 2783, 2780, 2784, 2785, 2786, 2788, + 2789, 2784, 2790, 2791, 2786, 2793, 2792, 2788, 2794, 2785, + 2795, 2796, 2782, 2798, 2783, 2799, 2796, 2803, 2798, 2789, + 0, 2793, 2790, 2791, 2792, 2794, 2794, 2800, 2804, 2801, + 0, 2795, 2809, 2800, 2801, 2799, 2809, 2803, 2807, 2807, + 2822, 2804, 2808, 2808, 2813, 2813, 2815, 2815, 2816, 2816, + 2819, 2816, 2817, 2817, 2819, 2817, 2818, 2818, 2822, 2818, + 2821, 2821, 2823, 2826, 2827, 2828, 2829, 2829, 2832, 2834, - 2826, 2819, 2831, 2830, 2832, 2825, 2833, 2831, 2834, 2835, - 2836, 2833, 2833, 2832, 2834, 2837, 2832, 2838, 2839, 2840, - 2841, 2841, 2838, 2839, 2842, 2836, 2843, 2844, 2844, 2870, - 2842, 2912, 2843, 0, 2835, 2912, 2837, 2846, 2840, 2845, - 2845, 2870, 2846, 2849, 2849, 2852, 2852, 2853, 2853, 2854, - 2854, 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2860, - 2861, 2861, 2862, 2864, 2868, 2866, 2867, 2867, 2860, 2869, - 2872, 2862, 2871, 2871, 2873, 2873, 2876, 2877, 2878, 2868, - 2877, 2880, 2869, 2864, 2866, 2872, 2879, 2879, 2882, 2883, - 2886, 2882, 2884, 2885, 2876, 2883, 2887, 2888, 2885, 2880, + 2828, 2833, 2835, 2834, 2836, 2844, 2823, 2838, 2833, 2839, + 2844, 2835, 2848, 2826, 2827, 2840, 2840, 2843, 2839, 2836, + 2841, 2841, 2845, 2832, 2846, 2838, 2842, 2842, 2849, 2846, + 2846, 2845, 2843, 2847, 2845, 2850, 2851, 2848, 2853, 2847, + 2852, 2851, 2855, 2849, 2856, 2852, 2854, 2854, 2855, 0, + 2856, 2857, 2857, 2858, 2858, 2859, 2850, 2853, 2862, 2862, + 2859, 2865, 2865, 2866, 2866, 2867, 2867, 2868, 2868, 2869, + 2869, 2870, 2870, 2871, 2871, 2873, 2874, 2874, 2875, 2876, + 2877, 2881, 2879, 2883, 2873, 2880, 2880, 2875, 2885, 2882, + 2889, 2876, 2884, 2884, 2891, 2883, 2881, 2886, 2886, 2893, - 2894, 2890, 2891, 2905, 2878, 2903, 2884, 2890, 2903, 2886, - 2910, 2891, 2914, 2888, 2887, 2894, 2905, 2906, 2906, 2907, - 2907, 2908, 2908, 2911, 2913, 2916, 2914, 2917, 2919, 2918, - 2919, 2920, 2911, 2910, 2918, 2921, 2921, 2922, 2917, 2923, - 2925, 2924, 2926, 2928, 2913, 2927, 2920, 2930, 2916, 2929, - 2922, 2931, 2928, 2937, 0, 2936, 2925, 2932, 2923, 2924, - 2927, 2929, 2932, 2938, 2938, 2939, 2944, 2926, 2930, 2936, - 2945, 2931, 2949, 2937, 2939, 2940, 2940, 2941, 2941, 2942, - 2942, 2943, 2943, 2946, 2947, 2944, 2946, 2948, 2950, 2947, - 2945, 2952, 2948, 2951, 2953, 2954, 2955, 2949, 2957, 2951, + 2877, 2879, 2882, 2885, 2890, 2892, 2892, 2890, 2889, 2895, + 2896, 2897, 2895, 2898, 2899, 2901, 2896, 2893, 2898, 2900, + 2891, 2903, 2918, 2904, 2907, 2897, 2916, 2903, 2923, 2916, + 2925, 2901, 2904, 2899, 2925, 2918, 2926, 2900, 2924, 2907, + 2919, 2919, 2920, 2920, 2921, 2921, 2927, 2924, 2929, 2931, + 2930, 2923, 2933, 2932, 2931, 2932, 2926, 2934, 2934, 2935, + 2927, 2930, 2936, 2938, 2937, 2939, 2941, 2933, 2940, 2944, + 2943, 2929, 2935, 2942, 2949, 2941, 2950, 2951, 2951, 2938, + 0, 2936, 2937, 2940, 2952, 2942, 2957, 2945, 2949, 2944, + 2939, 2943, 2945, 2952, 2953, 2953, 2950, 2954, 2954, 2955, - 2954, 2956, 2956, 2950, 2958, 2952, 2953, 2959, 2959, 2961, - 2963, 2966, 2966, 2957, 2967, 2967, 2955, 2968, 2969, 2972, - 2970, 2971, 2973, 2958, 2961, 2968, 2970, 2971, 2963, 2974, - 2979, 2975, 2980, 2972, 2985, 2973, 2975, 2969, 2976, 2976, - 2977, 2977, 2982, 2983, 2986, 2987, 2988, 2983, 2974, 2986, - 2989, 2979, 2980, 2990, 2985, 2991, 2982, 2992, 2996, 2988, - 2991, 2997, 2992, 2989, 2987, 2993, 2993, 2998, 2999, 2999, - 3000, 3001, 2990, 3002, 3002, 3000, 3003, 3001, 2996, 2997, - 3004, 3003, 3005, 3006, 3007, 3004, 2998, 3005, 3009, 3009, - 3007, 3010, 3011, 3011, 3013, 3014, 3010, 3015, 3013, 3016, + 2955, 2956, 2956, 2958, 2959, 2957, 2960, 2959, 2961, 2962, + 2963, 2960, 2964, 2961, 2965, 2966, 2967, 2968, 2964, 2969, + 2969, 2967, 2971, 2958, 2970, 2963, 2976, 2966, 2965, 2972, + 2972, 2974, 2979, 2979, 2962, 2980, 2980, 2968, 2982, 2970, + 2981, 2971, 2985, 2983, 2976, 2984, 2974, 2986, 2981, 2983, + 2987, 2984, 2992, 2988, 2989, 2989, 2985, 2982, 2988, 2993, + 2986, 2990, 2990, 2995, 2996, 2998, 2999, 3000, 2996, 2987, + 3001, 2999, 3003, 2992, 3002, 3004, 3005, 2995, 3009, 2993, + 3004, 3005, 3010, 3001, 3011, 2998, 3000, 3002, 3006, 3006, + 3013, 3003, 3012, 3012, 3016, 3013, 3014, 3019, 3009, 3016, - 3017, 3018, 3006, 3019, 3015, 3022, 3022, 3018, 3020, 3024, - 3024, 3025, 3026, 3027, 3014, 3028, 3029, 3026, 3016, 3017, - 3025, 3020, 3019, 3025, 3030, 3030, 3031, 3032, 3034, 3029, - 3036, 3031, 3027, 3041, 3028, 3035, 3035, 3037, 3037, 3039, - 3032, 3038, 3038, 3040, 3039, 3042, 3042, 3048, 3043, 3036, - 3040, 3050, 3041, 3043, 3034, 3044, 3046, 3044, 3045, 3045, - 3047, 3052, 3052, 3046, 3049, 3053, 3048, 3047, 3055, 3049, - 3050, 3056, 3057, 3055, 3058, 3062, 3056, 3059, 3059, 3061, - 3061, 3063, 3064, 3064, 3053, 3065, 3065, 0, 3066, 3068, - 3068, 3057, 3070, 3058, 3062, 3066, 3069, 3069, 3072, 3070, + 3010, 3017, 3014, 3011, 3015, 3015, 3017, 3018, 3020, 3022, + 3022, 3026, 3018, 3023, 3020, 3026, 3019, 3027, 3023, 3024, + 3024, 3028, 3029, 3030, 3031, 3032, 3033, 3047, 3028, 3040, + 3031, 3035, 3035, 3037, 3037, 3039, 3027, 3038, 3041, 3033, + 3039, 3029, 3030, 3042, 3032, 3045, 3038, 3044, 3040, 3038, + 3043, 3043, 3044, 3047, 3048, 3048, 3042, 3041, 3045, 3049, + 3050, 3050, 3051, 3051, 3052, 3053, 3054, 3055, 3055, 3052, + 3056, 3057, 3053, 3057, 3059, 3056, 3058, 3058, 3049, 3060, + 3061, 3059, 3062, 3063, 3066, 3054, 3060, 3062, 3065, 3065, + 3068, 3069, 3070, 3071, 3075, 3068, 3069, 3072, 3072, 3061, - 3063, 3075, 3076, 3072, 3077, 0, 3075, 3078, 3078, 3079, - 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3076, 0, 3077, 3083, 3083, 3083, 3083, 3083, 3083, - 3083, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3085, 3085, - 3085, 3085, 3085, 3085, 3085, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3089, - 3089, 0, 3089, 3089, 3089, 3089, 3090, 3090, 0, 0, - 0, 3090, 3090, 3091, 3091, 0, 0, 3091, 0, 3091, - 3092, 0, 0, 0, 0, 0, 3092, 3093, 3093, 0, - 0, 0, 3093, 3093, 3094, 0, 0, 0, 0, 0, + 3074, 3074, 3063, 3066, 3076, 3077, 3077, 3078, 3078, 3079, + 3089, 3070, 3071, 3075, 3081, 3081, 3079, 3082, 3082, 3083, + 3085, 3090, 3088, 3076, 0, 3085, 3083, 3088, 0, 3089, + 3091, 3091, 3092, 3092, 0, 0, 0, 0, 0, 0, + 3090, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3097, 3097, + 3097, 3097, 3097, 3097, 3097, 3098, 3098, 3098, 3098, 3098, + 3098, 3098, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3100, + 3100, 3100, 3100, 3100, 3100, 3100, 3102, 3102, 0, 3102, + 3102, 3102, 3102, 3103, 3103, 0, 0, 0, 3103, 3103, + 3104, 3104, 0, 0, 3104, 0, 3104, 3105, 0, 0, - 3094, 3095, 3095, 0, 3095, 3095, 3095, 3095, 3096, 3096, - 0, 3096, 3096, 3096, 3096, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 0, 0, 0, 3105, 3106, 3106, 0, 0, 0, 3106, + 3106, 3107, 0, 0, 0, 0, 0, 3107, 3108, 3108, + 0, 3108, 3108, 3108, 3108, 3109, 3109, 0, 3109, 3109, + 3109, 3109, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095 } ; static yy_state_type yy_last_accepting_state; @@ -2972,7 +2980,7 @@ static void config_end_include(void) } #endif -#line 2973 "" +#line 2982 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2981,9 +2989,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2982 "" +#line 2991 "" -#line 2984 "" +#line 2993 "" #define INITIAL 0 #define quotedstring 1 @@ -3205,7 +3213,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3206 "" +#line 3215 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3238,13 +3246,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 >= 3083 ) + if ( yy_current_state >= 3096 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6016 ); + while ( yy_base[yy_current_state] != 6033 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4119,461 +4127,461 @@ YY_RULE_SETUP case 170: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 171: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 172: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 173: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 174: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 175: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 176: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 177: YY_RULE_SETUP -#line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 384 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 178: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 179: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 180: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 181: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 182: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 183: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 184: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 185: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 186: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 187: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 188: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 189: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 190: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 191: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 192: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 193: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 194: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 195: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 196: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 197: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 198: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 199: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 200: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 201: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 202: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 203: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 204: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 205: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 206: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 207: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 208: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 209: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 210: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 211: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 212: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 213: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 214: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 215: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 216: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 217: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 218: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 219: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 220: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 221: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 222: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 223: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 224: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 225: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 226: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 227: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 228: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 233: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 234: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 235: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" +#line 443 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 236: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 445 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 237: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 238: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 239: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 240: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 241: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 461 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 258: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 259: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 260: YY_RULE_SETUP @@ -4588,200 +4596,205 @@ YY_RULE_SETUP case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 271: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 272: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 273: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 274: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 491 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 292: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 293: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 294: -/* rule 294 can match eol */ YY_RULE_SETUP #line 512 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 295: +/* rule 295 can match eol */ +YY_RULE_SETUP +#line 513 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 295: +case 296: YY_RULE_SETUP -#line 515 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 516 "./util/configlexer.lex" +#line 517 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 296: -YY_RULE_SETUP -#line 521 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 297: -/* rule 297 can match eol */ YY_RULE_SETUP #line 522 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 298: +/* rule 298 can match eol */ +YY_RULE_SETUP +#line 523 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 298: +case 299: YY_RULE_SETUP -#line 524 "./util/configlexer.lex" +#line 525 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4794,34 +4807,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 299: +case 300: YY_RULE_SETUP -#line 536 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 537 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 300: -YY_RULE_SETUP -#line 542 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 301: -/* rule 301 can match eol */ YY_RULE_SETUP #line 543 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 302: +/* rule 302 can match eol */ +YY_RULE_SETUP +#line 544 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 302: +case 303: YY_RULE_SETUP -#line 545 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4834,38 +4847,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 303: +case 304: YY_RULE_SETUP -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 559 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 304: -YY_RULE_SETUP -#line 563 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 305: -/* rule 305 can match eol */ YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 306: +/* rule 306 can match eol */ YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 307: YY_RULE_SETUP #line 566 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 308: +YY_RULE_SETUP +#line 567 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4873,27 +4886,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 308: -YY_RULE_SETUP -#line 575 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 576 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 577 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4903,7 +4916,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 584 "./util/configlexer.lex" +#line 585 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4915,33 +4928,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 595 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 312: +case 313: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 313: +case 314: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 314: +case 315: YY_RULE_SETUP -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4942 "" +#line 4956 "" case YY_END_OF_BUFFER: { @@ -5236,7 +5249,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 >= 3083 ) + if ( yy_current_state >= 3096 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5264,11 +5277,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 >= 3083 ) + if ( yy_current_state >= 3096 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3082); + yy_is_jam = (yy_current_state == 3095); return yy_is_jam ? 0 : yy_current_state; } @@ -5907,6 +5920,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d7c61c05b..74e5d767c 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -374,6 +374,7 @@ serve-expired-ttl{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_TTL) } serve-expired-ttl-reset{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } serve-expired-reply-ttl{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } serve-expired-client-timeout{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +serve-original-ttl{COLON} { YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } fake-dsa{COLON} { YDVAR(1, VAR_FAKE_DSA) } fake-sha1{COLON} { YDVAR(1, VAR_FAKE_SHA1) } val-log-level{COLON} { YDVAR(1, VAR_VAL_LOG_LEVEL) } diff --git a/util/configparser.c b/util/configparser.c index 2c9b0a5c4..3538b1937 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,14 +40,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,8 +61,8 @@ -/* First part of user prologue. */ -#line 38 "./util/configparser.y" +/* Copy the first part of user declarations. */ +#line 38 "./util/configparser.y" /* yacc.c:339 */ #include "config.h" @@ -95,17 +91,13 @@ extern struct config_parser_state* cfg_parser; #endif -#line 99 "util/configparser.c" +#line 95 "util/configparser.c" /* yacc.c:339 */ # ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr # else -# define YY_NULLPTR ((void*)0) +# define YY_NULLPTR 0 # endif # endif @@ -117,8 +109,8 @@ extern struct config_parser_state* cfg_parser; # define YYERROR_VERBOSE 0 #endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ +/* In a future release of Bison, this section will be replaced + by #include "configparser.h". */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -349,78 +341,79 @@ extern int yydebug; VAR_SERVE_EXPIRED_TTL_RESET = 470, VAR_SERVE_EXPIRED_REPLY_TTL = 471, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_SERVE_ORIGINAL_TTL = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -639,90 +632,92 @@ extern int yydebug; #define VAR_SERVE_EXPIRED_TTL_RESET 470 #define VAR_SERVE_EXPIRED_REPLY_TTL 471 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_SERVE_ORIGINAL_TTL 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 66 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:355 */ char* str; -#line 724 "util/configparser.c" - +#line 719 "util/configparser.c" /* yacc.c:355 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -735,7 +730,9 @@ int yyparse (void); #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +/* Copy the second part of user declarations. */ +#line 736 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -756,13 +753,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short yytype_uint16; +typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short yytype_int16; +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -774,7 +771,7 @@ typedef short yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif @@ -810,6 +807,15 @@ typedef short yytype_int16; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -817,7 +823,7 @@ typedef short yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -837,8 +843,6 @@ typedef short yytype_int16; #endif -#define YY_ASSERT(E) ((void) (0 && (E))) - #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -970,27 +974,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 615 +#define YYLAST 617 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 290 +#define YYNTOKENS 291 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 315 +#define YYNNTS 316 /* YYNRULES -- Number of rules. */ -#define YYNRULES 606 +#define YYNRULES 608 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 900 +#define YYNSTATES 903 +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 544 +#define YYMAXUTOK 545 -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1047,7 +1051,7 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289 + 285, 286, 287, 288, 289, 290 }; #if YYDEBUG @@ -1072,49 +1076,49 @@ static const yytype_uint16 yyrline[] = 253, 253, 254, 255, 255, 256, 256, 257, 257, 258, 258, 259, 259, 260, 260, 260, 261, 261, 262, 262, 263, 263, 264, 264, 265, 265, 266, 266, 267, 267, - 267, 268, 268, 268, 269, 269, 269, 270, 270, 271, - 272, 272, 273, 273, 274, 274, 275, 275, 276, 276, - 276, 277, 277, 277, 278, 278, 278, 279, 279, 280, - 280, 281, 281, 282, 284, 296, 297, 298, 298, 298, - 298, 298, 299, 299, 301, 313, 314, 315, 315, 315, - 315, 316, 316, 318, 332, 333, 334, 334, 334, 334, - 335, 335, 335, 337, 354, 355, 356, 356, 356, 356, - 357, 357, 357, 358, 361, 380, 397, 405, 415, 423, - 440, 441, 442, 442, 442, 442, 442, 443, 443, 443, - 444, 444, 446, 455, 464, 475, 484, 493, 502, 513, - 522, 534, 548, 563, 574, 591, 608, 625, 642, 657, - 672, 685, 700, 709, 718, 727, 736, 745, 754, 763, - 772, 781, 790, 799, 808, 817, 826, 839, 848, 861, - 870, 879, 888, 895, 902, 911, 918, 927, 935, 942, - 949, 957, 966, 975, 984, 998, 1007, 1016, 1025, 1034, - 1043, 1052, 1059, 1066, 1092, 1100, 1107, 1114, 1121, 1128, - 1136, 1144, 1152, 1159, 1170, 1181, 1188, 1197, 1206, 1215, - 1222, 1229, 1237, 1245, 1255, 1265, 1275, 1289, 1297, 1310, - 1321, 1329, 1342, 1351, 1360, 1369, 1379, 1389, 1397, 1410, - 1419, 1427, 1436, 1444, 1457, 1466, 1473, 1483, 1493, 1503, - 1513, 1523, 1533, 1543, 1553, 1560, 1567, 1574, 1583, 1592, - 1601, 1610, 1617, 1627, 1647, 1654, 1672, 1685, 1698, 1707, - 1716, 1725, 1734, 1744, 1754, 1765, 1774, 1783, 1792, 1801, - 1810, 1819, 1832, 1845, 1854, 1861, 1870, 1879, 1888, 1897, - 1905, 1918, 1926, 1967, 1974, 1989, 1999, 2009, 2016, 2023, - 2030, 2039, 2047, 2061, 2082, 2103, 2115, 2127, 2139, 2148, - 2169, 2179, 2188, 2196, 2204, 2217, 2230, 2245, 2260, 2269, - 2278, 2284, 2293, 2302, 2312, 2322, 2335, 2348, 2360, 2374, - 2386, 2400, 2410, 2417, 2424, 2433, 2442, 2452, 2462, 2472, - 2479, 2486, 2495, 2504, 2514, 2524, 2531, 2538, 2545, 2553, - 2563, 2573, 2583, 2593, 2632, 2642, 2650, 2658, 2673, 2682, - 2687, 2688, 2689, 2689, 2689, 2690, 2690, 2690, 2691, 2691, - 2693, 2703, 2712, 2719, 2726, 2733, 2740, 2747, 2754, 2759, - 2760, 2761, 2761, 2762, 2762, 2762, 2763, 2764, 2764, 2765, - 2765, 2766, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2774, - 2783, 2790, 2797, 2806, 2813, 2820, 2827, 2834, 2843, 2852, - 2859, 2866, 2876, 2886, 2896, 2906, 2916, 2926, 2931, 2932, - 2933, 2935, 2941, 2946, 2947, 2948, 2950, 2956, 2966, 2973, - 2982, 2990, 2995, 2996, 2998, 2998, 2998, 2999, 2999, 3000, - 3001, 3002, 3003, 3004, 3006, 3016, 3025, 3032, 3041, 3048, - 3057, 3065, 3078, 3086, 3099, 3104, 3105, 3106, 3106, 3107, - 3107, 3107, 3108, 3110, 3122, 3134, 3146, 3161, 3174, 3187, - 3198, 3203, 3204, 3205, 3205, 3207, 3222 + 268, 268, 269, 269, 269, 270, 270, 270, 271, 271, + 272, 273, 273, 274, 274, 275, 275, 276, 276, 277, + 277, 277, 278, 278, 278, 279, 279, 279, 280, 280, + 281, 281, 282, 282, 283, 285, 297, 298, 299, 299, + 299, 299, 299, 300, 300, 302, 314, 315, 316, 316, + 316, 316, 317, 317, 319, 333, 334, 335, 335, 335, + 335, 336, 336, 336, 338, 355, 356, 357, 357, 357, + 357, 358, 358, 358, 359, 362, 381, 398, 406, 416, + 424, 441, 442, 443, 443, 443, 443, 443, 444, 444, + 444, 445, 445, 447, 456, 465, 476, 485, 494, 503, + 514, 523, 535, 549, 564, 575, 592, 609, 626, 643, + 658, 673, 686, 701, 710, 719, 728, 737, 746, 755, + 764, 773, 782, 791, 800, 809, 818, 827, 840, 849, + 862, 871, 880, 889, 896, 903, 912, 919, 928, 936, + 943, 950, 958, 967, 976, 985, 999, 1008, 1017, 1026, + 1035, 1044, 1053, 1060, 1067, 1093, 1101, 1108, 1115, 1122, + 1129, 1137, 1145, 1153, 1160, 1171, 1182, 1189, 1198, 1207, + 1216, 1223, 1230, 1238, 1246, 1256, 1266, 1276, 1290, 1298, + 1311, 1322, 1330, 1343, 1352, 1361, 1370, 1380, 1390, 1398, + 1411, 1420, 1428, 1437, 1445, 1458, 1467, 1474, 1484, 1494, + 1504, 1514, 1524, 1534, 1544, 1554, 1561, 1568, 1575, 1584, + 1593, 1602, 1611, 1618, 1628, 1648, 1655, 1673, 1686, 1699, + 1708, 1717, 1726, 1735, 1745, 1755, 1766, 1775, 1784, 1793, + 1802, 1811, 1820, 1829, 1842, 1855, 1864, 1871, 1880, 1889, + 1898, 1907, 1915, 1928, 1936, 1977, 1984, 1999, 2009, 2019, + 2026, 2033, 2040, 2049, 2057, 2071, 2092, 2113, 2125, 2137, + 2149, 2158, 2179, 2189, 2198, 2206, 2214, 2227, 2240, 2255, + 2270, 2279, 2288, 2294, 2303, 2312, 2322, 2332, 2345, 2358, + 2370, 2384, 2396, 2410, 2420, 2427, 2434, 2443, 2452, 2462, + 2472, 2482, 2489, 2496, 2505, 2514, 2524, 2534, 2541, 2548, + 2555, 2563, 2573, 2583, 2593, 2603, 2642, 2652, 2660, 2668, + 2683, 2692, 2697, 2698, 2699, 2699, 2699, 2700, 2700, 2700, + 2701, 2701, 2703, 2713, 2722, 2729, 2736, 2743, 2750, 2757, + 2764, 2769, 2770, 2771, 2771, 2772, 2772, 2772, 2773, 2774, + 2774, 2775, 2775, 2776, 2776, 2777, 2778, 2779, 2780, 2781, + 2782, 2784, 2793, 2800, 2807, 2816, 2823, 2830, 2837, 2844, + 2853, 2862, 2869, 2876, 2886, 2896, 2906, 2916, 2926, 2936, + 2941, 2942, 2943, 2945, 2951, 2956, 2957, 2958, 2960, 2966, + 2976, 2983, 2992, 3000, 3005, 3006, 3008, 3008, 3008, 3009, + 3009, 3010, 3011, 3012, 3013, 3014, 3016, 3026, 3035, 3042, + 3051, 3058, 3067, 3075, 3088, 3096, 3109, 3114, 3115, 3116, + 3116, 3117, 3117, 3117, 3118, 3120, 3132, 3144, 3156, 3171, + 3184, 3197, 3208, 3213, 3214, 3215, 3215, 3217, 3232 }; #endif @@ -1202,8 +1206,9 @@ static const char *const yytname[] = "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", - "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", - "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", + "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_SERVE_ORIGINAL_TTL", + "VAR_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY", + "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT", "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", @@ -1296,8 +1301,8 @@ static const char *const yytname[] = "server_aggressive_nsec", "server_ignore_cd_flag", "server_serve_expired", "server_serve_expired_ttl", "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", + "server_serve_expired_client_timeout", "server_serve_original_ttl", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", @@ -1391,14 +1396,15 @@ static const yytype_uint16 yytoknum[] = 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545 }; # endif -#define YYPACT_NINF -280 +#define YYPACT_NINF -281 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-280))) + (!!((Yystate) == (-281))) #define YYTABLE_NINF -1 @@ -1409,11 +1415,11 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -280, 0, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - 277, -42, -37, -41, -7, -43, -30, -136, -106, -279, - -177, -172, -271, 2, 3, 4, 25, 26, 28, 31, + -281, 0, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 278, -42, -37, -41, -7, -43, -30, -136, -106, -280, + -178, -173, -272, 2, 3, 4, 25, 26, 28, 31, 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 91, 93, 94, @@ -1427,78 +1433,79 @@ static const yytype_int16 yypact[] = 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, - 201, 205, 206, 207, 208, 209, 210, 211, 213, 214, - 215, 216, 219, 220, 222, 223, 224, 225, 226, 227, - 228, 229, 237, 243, 245, 246, 247, 249, 250, 251, + 201, 202, 206, 207, 208, 209, 210, 211, 212, 214, + 215, 216, 217, 220, 221, 223, 224, 225, 226, 227, + 228, 229, 230, 238, 244, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 269, 270, 271, 273, - 274, 275, 276, 311, 312, 313, 314, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 318, 319, 320, 362, 363, 364, 365, -280, - -280, -280, -280, -280, -280, -280, -280, 366, 367, 368, - 369, 370, 374, -280, -280, -280, -280, -280, -280, -280, - 378, 379, 404, 405, 406, 408, 419, -280, -280, -280, - -280, -280, -280, -280, -280, 420, 421, 422, 423, 424, - 425, 426, 427, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 428, 429, 430, 431, 432, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 433, 434, - 435, 436, 437, 477, 479, 495, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 512, 513, 514, 515, 516, - 517, 518, 520, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 521, -280, -280, 522, -280, -280, 523, 524, - 525, 526, 529, 532, 535, 536, 545, 546, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 547, - 549, 550, 551, 552, 553, -280, -280, -280, -280, -280, - -280, -280, 554, 555, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 556, 557, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, 558, 559, 560, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 561, 562, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 563, 564, - 565, 566, 567, 568, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, 569, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 570, -280, -280, 571, 572, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 573, - 574, 575, -280, -280, -280, -280, -280, -280, -280, -280 + 262, 263, 264, 265, 266, 267, 268, 270, 271, 272, + 274, 275, 276, 277, 312, 313, 314, 315, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 319, 320, 321, 363, 364, 365, + 366, -281, -281, -281, -281, -281, -281, -281, -281, 367, + 368, 369, 370, 371, 375, -281, -281, -281, -281, -281, + -281, -281, 379, 380, 405, 406, 407, 409, 420, -281, + -281, -281, -281, -281, -281, -281, -281, 421, 422, 423, + 424, 425, 426, 427, 428, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 429, 430, 431, 432, 433, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 434, 435, 436, 437, 438, 478, 480, 497, -281, -281, + -281, -281, -281, -281, -281, -281, -281, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 514, 515, 516, + 517, 518, 519, 520, 522, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 523, -281, -281, 524, -281, -281, + 525, 526, 527, 528, 531, 534, 537, 538, 547, 548, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, 549, 551, 552, 553, 554, 555, -281, -281, -281, + -281, -281, -281, -281, 556, 557, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 558, + 559, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, 560, 561, 562, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 563, + 564, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 565, 566, 567, 568, 569, 570, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 571, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, 572, -281, + -281, 573, 574, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 575, 576, 577, -281, -281, -281, -281, -281, + -281, -281, -281 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1506,9 +1513,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 17, 214, 224, 489, 547, 508, 233, - 561, 584, 243, 600, 259, 552, 3, 19, 216, 226, - 235, 245, 261, 491, 510, 549, 554, 563, 586, 602, + 2, 0, 1, 17, 215, 225, 491, 549, 510, 234, + 563, 586, 244, 602, 260, 554, 3, 19, 217, 227, + 236, 246, 262, 493, 512, 551, 556, 565, 588, 604, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1529,147 +1536,148 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 20, 21, - 84, 87, 96, 184, 185, 22, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 35, 75, 23, 88, - 89, 46, 68, 83, 24, 25, 28, 29, 26, 27, - 30, 31, 32, 33, 34, 119, 196, 120, 122, 123, - 124, 198, 203, 199, 210, 211, 212, 213, 180, 85, - 74, 100, 117, 118, 208, 205, 121, 36, 37, 38, - 39, 40, 76, 90, 91, 106, 62, 72, 63, 188, - 189, 101, 56, 57, 187, 58, 59, 110, 114, 128, - 137, 163, 140, 209, 111, 69, 41, 42, 43, 98, - 129, 130, 131, 44, 45, 47, 48, 50, 51, 49, - 135, 52, 53, 54, 60, 79, 115, 93, 136, 86, - 159, 94, 95, 112, 113, 206, 99, 55, 77, 80, - 61, 64, 102, 103, 78, 160, 104, 65, 66, 67, - 197, 116, 173, 174, 175, 176, 177, 178, 186, 105, - 73, 107, 108, 109, 161, 70, 71, 92, 81, 82, - 97, 125, 126, 207, 127, 132, 133, 134, 164, 165, - 167, 169, 170, 168, 171, 181, 138, 139, 143, 144, - 141, 142, 145, 146, 148, 147, 200, 202, 201, 162, - 172, 190, 192, 191, 193, 194, 195, 166, 179, 182, - 183, 204, 0, 0, 0, 0, 0, 0, 0, 215, - 217, 218, 219, 221, 222, 223, 220, 0, 0, 0, - 0, 0, 0, 225, 227, 228, 229, 230, 231, 232, - 0, 0, 0, 0, 0, 0, 0, 234, 236, 237, - 240, 241, 238, 242, 239, 0, 0, 0, 0, 0, - 0, 0, 0, 244, 246, 247, 248, 249, 253, 250, - 251, 252, 0, 0, 0, 0, 0, 264, 268, 269, - 270, 271, 260, 262, 263, 265, 266, 267, 0, 0, - 0, 0, 0, 0, 0, 0, 490, 492, 494, 493, - 499, 495, 496, 497, 498, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 20, + 21, 84, 87, 96, 185, 186, 22, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 35, 75, 23, + 88, 89, 46, 68, 83, 24, 25, 28, 29, 26, + 27, 30, 31, 32, 33, 34, 119, 197, 120, 122, + 123, 124, 199, 204, 200, 211, 212, 213, 214, 181, + 85, 74, 100, 117, 118, 209, 206, 121, 36, 37, + 38, 39, 40, 76, 90, 91, 106, 62, 72, 63, + 189, 190, 101, 56, 57, 188, 58, 59, 110, 114, + 128, 137, 163, 140, 210, 111, 69, 41, 42, 43, + 98, 129, 130, 131, 44, 45, 47, 48, 50, 51, + 49, 135, 52, 53, 54, 60, 79, 115, 93, 136, + 86, 159, 94, 95, 112, 113, 207, 99, 55, 77, + 80, 61, 64, 102, 103, 78, 160, 104, 65, 66, + 67, 198, 116, 173, 174, 175, 176, 177, 178, 179, + 187, 105, 73, 107, 108, 109, 161, 70, 71, 92, + 81, 82, 97, 125, 126, 208, 127, 132, 133, 134, + 164, 165, 167, 169, 170, 168, 171, 182, 138, 139, + 143, 144, 141, 142, 145, 146, 148, 147, 201, 203, + 202, 162, 172, 191, 193, 192, 194, 195, 196, 166, + 180, 183, 184, 205, 0, 0, 0, 0, 0, 0, + 0, 216, 218, 219, 220, 222, 223, 224, 221, 0, + 0, 0, 0, 0, 0, 226, 228, 229, 230, 231, + 232, 233, 0, 0, 0, 0, 0, 0, 0, 235, + 237, 238, 241, 242, 239, 243, 240, 0, 0, 0, + 0, 0, 0, 0, 0, 245, 247, 248, 249, 250, + 254, 251, 252, 253, 0, 0, 0, 0, 0, 265, + 269, 270, 271, 272, 261, 263, 264, 266, 267, 268, + 0, 0, 0, 0, 0, 0, 0, 0, 492, 494, + 496, 495, 501, 497, 498, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 509, 511, 512, 513, 514, 515, 516, + 0, 0, 0, 0, 0, 511, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 0, 548, 550, 0, 553, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 564, - 565, 566, 568, 569, 567, 570, 571, 572, 573, 0, - 0, 0, 0, 0, 0, 585, 587, 588, 589, 590, - 591, 592, 0, 0, 601, 603, 604, 273, 272, 279, - 292, 290, 302, 298, 299, 303, 300, 301, 304, 305, - 306, 307, 308, 331, 332, 333, 334, 335, 360, 361, - 362, 367, 368, 295, 369, 370, 373, 371, 372, 375, - 376, 377, 391, 346, 347, 349, 350, 378, 394, 340, - 342, 395, 401, 402, 403, 296, 359, 419, 420, 341, - 414, 324, 291, 336, 392, 398, 379, 0, 0, 423, - 297, 274, 323, 383, 275, 293, 294, 337, 338, 421, - 381, 385, 386, 276, 424, 363, 390, 325, 345, 396, - 397, 400, 413, 339, 417, 415, 416, 351, 358, 387, - 388, 352, 353, 380, 405, 326, 327, 330, 309, 311, - 312, 313, 314, 315, 425, 426, 428, 364, 365, 366, - 374, 429, 430, 431, 0, 0, 0, 382, 354, 356, - 557, 440, 444, 442, 441, 445, 443, 0, 0, 448, - 449, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 384, 399, 418, 453, 454, 355, 432, 0, 0, - 0, 0, 0, 0, 406, 407, 408, 409, 410, 411, - 412, 558, 348, 343, 404, 322, 277, 278, 344, 455, - 457, 456, 458, 459, 460, 310, 317, 450, 452, 451, - 316, 0, 329, 389, 427, 328, 357, 318, 319, 321, - 320, 461, 462, 463, 467, 466, 464, 465, 468, 469, - 470, 471, 473, 472, 482, 0, 486, 487, 0, 0, - 488, 474, 480, 475, 476, 477, 479, 481, 478, 254, - 255, 256, 257, 258, 500, 502, 501, 504, 505, 506, - 507, 503, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 551, 556, 574, 575, 576, 579, 577, 578, 580, 581, - 582, 583, 593, 594, 595, 596, 597, 598, 605, 606, - 393, 422, 439, 559, 560, 446, 447, 433, 434, 0, - 0, 0, 438, 599, 483, 484, 485, 437, 435, 436 + 527, 528, 529, 530, 0, 550, 552, 0, 555, 557, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 566, 567, 568, 570, 571, 569, 572, 573, 574, + 575, 0, 0, 0, 0, 0, 0, 587, 589, 590, + 591, 592, 593, 594, 0, 0, 603, 605, 606, 274, + 273, 280, 293, 291, 303, 299, 300, 304, 301, 302, + 305, 306, 307, 308, 309, 332, 333, 334, 335, 336, + 361, 362, 363, 368, 369, 296, 370, 371, 374, 372, + 373, 376, 377, 378, 392, 347, 348, 350, 351, 379, + 395, 341, 343, 396, 402, 403, 404, 297, 360, 421, + 422, 342, 416, 325, 292, 337, 393, 399, 380, 0, + 0, 425, 298, 275, 324, 384, 276, 294, 295, 338, + 339, 423, 382, 386, 387, 277, 426, 364, 391, 326, + 346, 397, 398, 401, 415, 340, 419, 417, 418, 352, + 359, 388, 389, 353, 354, 381, 406, 327, 328, 331, + 310, 312, 313, 314, 315, 316, 427, 428, 430, 365, + 366, 367, 375, 431, 432, 433, 0, 0, 0, 383, + 355, 357, 559, 442, 446, 444, 443, 447, 445, 0, + 0, 450, 451, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 385, 400, 420, 455, 456, 356, 434, + 0, 0, 0, 0, 0, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 560, 349, 344, 405, 323, 278, + 279, 345, 457, 459, 458, 460, 461, 462, 311, 318, + 452, 454, 453, 317, 0, 330, 390, 429, 329, 358, + 319, 320, 322, 321, 463, 464, 465, 469, 468, 466, + 467, 470, 471, 472, 473, 475, 474, 484, 0, 488, + 489, 0, 0, 490, 476, 482, 477, 478, 479, 481, + 483, 480, 255, 256, 257, 258, 259, 502, 504, 503, + 506, 507, 508, 509, 505, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 553, 558, 576, 577, 578, 581, 579, + 580, 582, 583, 584, 585, 595, 596, 597, 598, 599, + 600, 607, 608, 394, 424, 441, 561, 562, 448, 449, + 435, 436, 0, 0, 0, 440, 601, 485, 486, 487, + 439, 437, 438 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 576, 577, - 578, 579, 580, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280 + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 578, + 579, 580, 581, 582, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 16, 17, 30, 237, 18, 31, 439, 19, - 32, 453, 20, 33, 467, 21, 34, 483, 497, 498, - 499, 500, 501, 22, 35, 502, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 440, 441, 442, 443, 444, - 445, 446, 454, 455, 456, 457, 458, 459, 484, 485, - 486, 487, 488, 489, 490, 491, 468, 469, 470, 471, - 472, 473, 474, 23, 36, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 24, 37, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 25, 38, 563, 564, 26, - 39, 566, 567, 427, 428, 429, 430, 27, 40, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 28, 41, 595, 596, 597, 598, 599, 600, 601, 431, - 29, 42, 604, 605, 606 + -1, 1, 16, 17, 30, 238, 18, 31, 441, 19, + 32, 455, 20, 33, 469, 21, 34, 485, 499, 500, + 501, 502, 503, 22, 35, 504, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 442, 443, 444, 445, + 446, 447, 448, 456, 457, 458, 459, 460, 461, 486, + 487, 488, 489, 490, 491, 492, 493, 470, 471, 472, + 473, 474, 475, 476, 23, 36, 518, 519, 520, 521, + 522, 523, 524, 525, 526, 24, 37, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 561, 562, 563, 25, 38, 565, 566, + 26, 39, 568, 569, 429, 430, 431, 432, 27, 40, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 28, 41, 597, 598, 599, 600, 601, 602, 603, + 433, 29, 42, 606, 607, 608 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1677,80 +1685,80 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 475, 432, 460, 433, 434, 562, 447, 602, 603, - 565, 3, 607, 608, 609, 448, 449, 525, 526, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 610, 611, 475, 612, 461, - 462, 613, 614, 615, 616, 4, 617, 618, 619, 620, - 621, 5, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 622, 623, 463, 435, 508, 509, 510, 511, - 512, 513, 514, 515, 589, 590, 591, 592, 593, 594, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 6, 436, 639, 640, 437, - 450, 641, 451, 642, 643, 644, 645, 646, 647, 648, - 649, 7, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, - 668, 464, 465, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 8, 688, 689, 690, 691, 692, 693, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 466, 706, 707, 708, 709, 710, 711, 712, 713, - 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, - 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 9, 744, 477, 478, 479, 745, 746, 747, 748, 749, - 750, 751, 482, 752, 753, 754, 755, 438, 10, 756, - 757, 452, 758, 759, 760, 761, 762, 763, 764, 765, - 492, 493, 494, 495, 496, 11, 476, 766, 477, 478, - 479, 480, 481, 767, 12, 768, 769, 770, 482, 771, - 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 13, 790, - 791, 792, 14, 793, 794, 795, 796, 0, 15, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 797, 798, 799, 800, 75, 76, 77, 801, 802, - 803, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 804, 805, 806, 807, 808, 809, 810, 811, - 812, 119, 120, 121, 813, 122, 123, 124, 814, 815, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 816, 817, 818, 149, 819, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 820, - 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 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, 839, 199, 840, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 841, 842, 843, 844, 845, - 846, 847, 848, 849, 850, 851, 215, 216, 217, 218, - 219, 220, 852, 853, 854, 855, 856, 857, 858, 221, - 859, 860, 861, 862, 863, 864, 865, 222, 223, 866, - 224, 225, 867, 226, 227, 868, 869, 228, 229, 230, - 231, 232, 233, 234, 235, 870, 871, 872, 236, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 0, 0, 0, 0, + 2, 477, 434, 462, 435, 436, 564, 449, 604, 605, + 567, 3, 609, 610, 611, 450, 451, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 544, 612, 613, 477, 614, 463, + 464, 615, 616, 617, 618, 4, 619, 620, 621, 622, + 623, 5, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 624, 625, 465, 437, 510, 511, 512, 513, + 514, 515, 516, 517, 591, 592, 593, 594, 595, 596, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 6, 438, 641, 642, 439, + 452, 643, 453, 644, 645, 646, 647, 648, 649, 650, + 651, 7, 652, 653, 654, 655, 656, 657, 658, 659, + 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 466, 467, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, + 688, 689, 8, 690, 691, 692, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, + 707, 468, 708, 709, 710, 711, 712, 713, 714, 715, + 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, + 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, + 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, + 9, 746, 747, 479, 480, 481, 748, 749, 750, 751, + 752, 753, 754, 484, 755, 756, 757, 758, 440, 10, + 759, 760, 454, 761, 762, 763, 764, 765, 766, 767, + 768, 494, 495, 496, 497, 498, 11, 478, 769, 479, + 480, 481, 482, 483, 770, 12, 771, 772, 773, 484, + 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, + 784, 785, 786, 787, 788, 789, 790, 791, 792, 13, + 793, 794, 795, 14, 796, 797, 798, 799, 0, 15, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 800, 801, 802, 803, 75, 76, 77, 804, + 805, 806, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 119, 120, 121, 816, 122, 123, 124, 817, + 818, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 819, 820, 821, 149, 822, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, + 833, 834, 835, 836, 837, 838, 839, 840, 841, 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, 842, 199, + 843, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 216, 217, + 218, 219, 220, 221, 855, 856, 857, 858, 859, 860, + 861, 222, 862, 863, 864, 865, 866, 867, 868, 223, + 224, 869, 225, 226, 870, 227, 228, 871, 872, 229, + 230, 231, 232, 233, 234, 235, 236, 873, 874, 875, + 237, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 503, 504, 505, 506, 507 + 0, 0, 0, 505, 506, 507, 508, 509 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 289, 11, 10, 10, 10, 52, 53, 153, 154, 155, + 0, 44, 44, 44, 46, 47, 112, 44, 280, 281, + 290, 11, 10, 10, 10, 52, 53, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 10, 51, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 10, 10, 105, 107, 96, 97, 98, 99, + 100, 101, 102, 103, 247, 248, 249, 250, 251, 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, @@ -1764,58 +1772,58 @@ static const yytype_int16 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, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 210, 10, 10, 256, 257, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 10, 10, 10, 10, 10, 10, 10, + 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, + 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 10, 282, 10, 10, 10, 10, -1, 288, 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, 37, 38, 39, 40, 41, 42, - 43, 10, 10, 10, 10, 48, 49, 50, 10, 10, - 10, 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, 88, 89, 90, 91, 92, - 93, 94, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 104, 105, 106, 10, 108, 109, 110, 10, 10, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 10, 10, 10, 140, 10, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, 10, 10, 283, 10, 10, 10, 10, -1, 289, + 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, 37, 38, 39, 40, 41, + 42, 43, 10, 10, 10, 10, 48, 49, 50, 10, + 10, 10, 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, 88, 89, 90, 91, + 92, 93, 94, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 104, 105, 106, 10, 108, 109, 110, 10, + 10, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 10, 10, 10, 140, 10, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 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, 10, 211, 10, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 239, 240, 241, 242, - 243, 244, 10, 10, 10, 10, 10, 10, 10, 252, - 10, 10, 10, 10, 10, 10, 10, 260, 261, 10, - 263, 264, 10, 266, 267, 10, 10, 270, 271, 272, - 273, 274, 275, 276, 277, 10, 10, 10, 281, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 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, 10, 211, + 10, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 240, 241, + 242, 243, 244, 245, 10, 10, 10, 10, 10, 10, + 10, 253, 10, 10, 10, 10, 10, 10, 10, 261, + 262, 10, 264, 265, 10, 267, 268, 10, 10, 271, + 272, 273, 274, 275, 276, 277, 278, 10, 10, 10, + 282, 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, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, 35, 35, 35, 35 + -1, -1, -1, 35, 35, 35, 35, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 291, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 288, 292, 293, 296, 299, - 302, 305, 313, 533, 544, 565, 569, 577, 590, 600, - 294, 297, 300, 303, 306, 314, 534, 545, 566, 570, - 578, 591, 601, 12, 13, 14, 15, 16, 17, 18, + 0, 292, 0, 11, 45, 51, 95, 111, 152, 210, + 229, 246, 255, 279, 283, 289, 293, 294, 297, 300, + 303, 306, 314, 535, 546, 567, 571, 579, 592, 602, + 295, 298, 301, 304, 307, 315, 536, 547, 568, 572, + 580, 593, 603, 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, 37, 38, 39, 40, 41, 42, 43, 48, 49, 50, 54, 55, @@ -1832,9 +1840,9 @@ static const yytype_uint16 yystos[] = 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 239, 240, 241, 242, 243, - 244, 252, 260, 261, 263, 264, 266, 267, 270, 271, - 272, 273, 274, 275, 276, 277, 281, 295, 316, 317, + 223, 224, 225, 226, 227, 228, 240, 241, 242, 243, + 244, 245, 253, 261, 262, 264, 265, 267, 268, 271, + 272, 273, 274, 275, 276, 277, 278, 282, 296, 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, @@ -1853,25 +1861,25 @@ static const yytype_uint16 yystos[] = 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 573, 574, 575, - 576, 599, 44, 46, 47, 107, 138, 141, 269, 298, - 505, 506, 507, 508, 509, 510, 511, 44, 52, 53, - 137, 139, 268, 301, 512, 513, 514, 515, 516, 517, - 44, 80, 81, 105, 172, 173, 212, 304, 526, 527, - 528, 529, 530, 531, 532, 44, 253, 255, 256, 257, - 258, 259, 265, 307, 518, 519, 520, 521, 522, 523, - 524, 525, 283, 284, 285, 286, 287, 308, 309, 310, - 311, 312, 315, 518, 519, 520, 521, 522, 96, 97, - 98, 99, 100, 101, 102, 103, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 546, 547, 548, 549, 550, 551, 552, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 575, + 576, 577, 578, 601, 44, 46, 47, 107, 138, 141, + 270, 299, 507, 508, 509, 510, 511, 512, 513, 44, + 52, 53, 137, 139, 269, 302, 514, 515, 516, 517, + 518, 519, 44, 80, 81, 105, 172, 173, 212, 305, + 528, 529, 530, 531, 532, 533, 534, 44, 254, 256, + 257, 258, 259, 260, 266, 308, 520, 521, 522, 523, + 524, 525, 526, 527, 284, 285, 286, 287, 288, 309, + 310, 311, 312, 313, 316, 520, 521, 522, 523, 524, + 96, 97, 98, 99, 100, 101, 102, 103, 537, 538, + 539, 540, 541, 542, 543, 544, 545, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 112, 567, 568, 289, 571, 572, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 246, - 247, 248, 249, 250, 251, 592, 593, 594, 595, 596, - 597, 598, 279, 280, 602, 603, 604, 10, 10, 10, + 563, 564, 565, 566, 112, 569, 570, 290, 573, 574, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 247, 248, 249, 250, 251, 252, 594, 595, 596, + 597, 598, 599, 600, 280, 281, 604, 605, 606, 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, @@ -1900,40 +1908,41 @@ 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, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 290, 291, 291, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 293, 294, 294, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 296, 297, 297, 298, 298, 298, - 298, 298, 298, 298, 299, 300, 300, 301, 301, 301, - 301, 301, 301, 302, 303, 303, 304, 304, 304, 304, - 304, 304, 304, 305, 306, 306, 307, 307, 307, 307, - 307, 307, 307, 307, 308, 309, 310, 311, 312, 313, - 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 0, 291, 292, 292, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 293, 293, 293, 294, 295, 295, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 297, 298, 298, 299, 299, + 299, 299, 299, 299, 299, 300, 301, 301, 302, 302, + 302, 302, 302, 302, 303, 304, 304, 305, 305, 305, + 305, 305, 305, 305, 306, 307, 307, 308, 308, 308, + 308, 308, 308, 308, 308, 309, 310, 311, 312, 313, + 314, 315, 315, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 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, @@ -1955,18 +1964,18 @@ static const yytype_uint16 yyr1[] = 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 534, 535, 535, 535, 535, 535, 535, 535, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 545, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, + 534, 535, 536, 536, 537, 537, 537, 537, 537, 537, + 537, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 547, 548, 548, 548, 548, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 558, 559, 560, 561, 562, 563, 564, 565, 566, 566, - 567, 568, 569, 570, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 578, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 591, 592, 592, 592, - 592, 592, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 601, 602, 602, 603, 604 + 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, + 568, 568, 569, 570, 571, 572, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 580, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 593, 594, + 594, 594, 594, 594, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 603, 604, 604, 605, 606 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1993,46 +2002,46 @@ 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, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 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, 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, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, + 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 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, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, - 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, + 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2048,22 +2057,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) /* Error token number */ #define YYTERROR 1 @@ -2103,37 +2112,37 @@ do { \ } while (0) -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyoutput = yyo; - YYUSE (yyoutput); + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyo, "%s %s (", + YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -2167,7 +2176,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -2178,7 +2187,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] + &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } @@ -2282,10 +2291,7 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; @@ -2303,7 +2309,7 @@ yytnamerr (char *yyres, const char *yystr) if (! yyres) return yystrlen (yystr); - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); + return yystpcpy (yyres, yystr) - yyres; } # endif @@ -2381,10 +2387,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } } } @@ -2396,7 +2402,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break - default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -2408,10 +2413,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -2537,33 +2541,23 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; - /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -2579,10 +2573,14 @@ yysetstate: &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); + yyss = yyss1; yyvs = yyvs1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -2598,33 +2596,35 @@ yysetstate: goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -2682,6 +2682,7 @@ yybackup: YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + goto yynewstate; @@ -2696,7 +2697,7 @@ yydefault: /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -2716,16 +2717,16 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 17: -#line 191 "./util/configparser.y" + case 17: +#line 191 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2725 "util/configparser.c" +#line 2726 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -#line 285 "./util/configparser.y" + case 215: +#line 286 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2736,11 +2737,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2740 "util/configparser.c" +#line 2741 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -#line 302 "./util/configparser.y" + case 225: +#line 303 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2751,11 +2752,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2755 "util/configparser.c" +#line 2756 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -#line 319 "./util/configparser.y" + case 234: +#line 320 "./util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2768,11 +2769,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2772 "util/configparser.c" +#line 2773 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -#line 338 "./util/configparser.y" + case 244: +#line 339 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2788,11 +2789,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2792 "util/configparser.c" +#line 2793 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 362 "./util/configparser.y" + case 255: +#line 363 "./util/configparser.y" /* yacc.c:1646 */ { uint8_t* bitlist; size_t len = 0; @@ -2809,11 +2810,11 @@ yyreduce: } } -#line 2813 "util/configparser.c" +#line 2814 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 381 "./util/configparser.y" + case 256: +#line 382 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2828,21 +2829,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2832 "util/configparser.c" +#line 2833 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 398 "./util/configparser.y" + case 257: +#line 399 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2842 "util/configparser.c" +#line 2843 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 406 "./util/configparser.y" + case 258: +#line 407 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2850,21 +2851,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2854 "util/configparser.c" +#line 2855 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 416 "./util/configparser.y" + case 259: +#line 417 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2864 "util/configparser.c" +#line 2865 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 424 "./util/configparser.y" + case 260: +#line 425 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2880,11 +2881,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2885 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 447 "./util/configparser.y" + case 273: +#line 448 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2892,11 +2893,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2896 "util/configparser.c" +#line 2897 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 456 "./util/configparser.y" + case 274: +#line 457 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2904,11 +2905,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2908 "util/configparser.c" +#line 2909 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 465 "./util/configparser.y" + case 275: +#line 466 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2918,11 +2919,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2922 "util/configparser.c" +#line 2923 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 476 "./util/configparser.y" + case 276: +#line 477 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2930,11 +2931,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2934 "util/configparser.c" +#line 2935 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 485 "./util/configparser.y" + case 277: +#line 486 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2942,11 +2943,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2946 "util/configparser.c" +#line 2947 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 494 "./util/configparser.y" + case 278: +#line 495 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2954,11 +2955,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2958 "util/configparser.c" +#line 2959 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 503 "./util/configparser.y" + case 279: +#line 504 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2968,11 +2969,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2972 "util/configparser.c" +#line 2973 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 514 "./util/configparser.y" + case 280: +#line 515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2980,11 +2981,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2984 "util/configparser.c" +#line 2985 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 523 "./util/configparser.y" + case 281: +#line 524 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2995,11 +2996,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2999 "util/configparser.c" +#line 3000 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 535 "./util/configparser.y" + case 282: +#line 536 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3011,11 +3012,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3015 "util/configparser.c" +#line 3016 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 549 "./util/configparser.y" + case 283: +#line 550 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3029,11 +3030,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3033 "util/configparser.c" +#line 3034 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 564 "./util/configparser.y" + case 284: +#line 565 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3043,11 +3044,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3047 "util/configparser.c" +#line 3048 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 575 "./util/configparser.y" + case 285: +#line 576 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3063,11 +3064,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3067 "util/configparser.c" +#line 3068 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 592 "./util/configparser.y" + case 286: +#line 593 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3083,11 +3084,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3087 "util/configparser.c" +#line 3088 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 609 "./util/configparser.y" + case 287: +#line 610 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3103,11 +3104,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3107 "util/configparser.c" +#line 3108 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 626 "./util/configparser.y" + case 288: +#line 627 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3123,11 +3124,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3127 "util/configparser.c" +#line 3128 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 643 "./util/configparser.y" + case 289: +#line 644 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3141,11 +3142,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3146 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 658 "./util/configparser.y" + case 290: +#line 659 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3159,11 +3160,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3163 "util/configparser.c" +#line 3164 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 673 "./util/configparser.y" + case 291: +#line 674 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3175,11 +3176,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3179 "util/configparser.c" +#line 3180 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 686 "./util/configparser.y" + case 292: +#line 687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3193,11 +3194,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3197 "util/configparser.c" +#line 3198 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 701 "./util/configparser.y" + case 293: +#line 702 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3205,11 +3206,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3209 "util/configparser.c" +#line 3210 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 710 "./util/configparser.y" + case 294: +#line 711 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3217,11 +3218,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3221 "util/configparser.c" +#line 3222 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 719 "./util/configparser.y" + case 295: +#line 720 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3229,11 +3230,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3233 "util/configparser.c" +#line 3234 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 728 "./util/configparser.y" + case 296: +#line 729 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3241,11 +3242,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3245 "util/configparser.c" +#line 3246 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 737 "./util/configparser.y" + case 297: +#line 738 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3253,11 +3254,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3258 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 746 "./util/configparser.y" + case 298: +#line 747 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3265,11 +3266,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3269 "util/configparser.c" +#line 3270 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 755 "./util/configparser.y" + case 299: +#line 756 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3277,11 +3278,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3281 "util/configparser.c" +#line 3282 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 764 "./util/configparser.y" + case 300: +#line 765 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3289,11 +3290,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3293 "util/configparser.c" +#line 3294 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 773 "./util/configparser.y" + case 301: +#line 774 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3301,11 +3302,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3305 "util/configparser.c" +#line 3306 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 782 "./util/configparser.y" + case 302: +#line 783 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3313,11 +3314,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3317 "util/configparser.c" +#line 3318 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 791 "./util/configparser.y" + case 303: +#line 792 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3325,11 +3326,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" +#line 3330 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 800 "./util/configparser.y" + case 304: +#line 801 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3337,11 +3338,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3341 "util/configparser.c" +#line 3342 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 809 "./util/configparser.y" + case 305: +#line 810 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3349,11 +3350,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3353 "util/configparser.c" +#line 3354 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 818 "./util/configparser.y" + case 306: +#line 819 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3361,11 +3362,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3365 "util/configparser.c" +#line 3366 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 827 "./util/configparser.y" + case 307: +#line 828 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3377,11 +3378,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3382 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 840 "./util/configparser.y" + case 308: +#line 841 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3389,11 +3390,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3394 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 849 "./util/configparser.y" + case 309: +#line 850 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3405,11 +3406,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3409 "util/configparser.c" +#line 3410 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 862 "./util/configparser.y" + case 310: +#line 863 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3417,11 +3418,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3421 "util/configparser.c" +#line 3422 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 871 "./util/configparser.y" + case 311: +#line 872 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3429,11 +3430,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3433 "util/configparser.c" +#line 3434 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 880 "./util/configparser.y" + case 312: +#line 881 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3441,31 +3442,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3445 "util/configparser.c" +#line 3446 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 889 "./util/configparser.y" + case 313: +#line 890 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3455 "util/configparser.c" +#line 3456 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 896 "./util/configparser.y" + case 314: +#line 897 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3465 "util/configparser.c" +#line 3466 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 903 "./util/configparser.y" + case 315: +#line 904 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3473,21 +3474,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3478 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 912 "./util/configparser.y" + case 316: +#line 913 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3487 "util/configparser.c" +#line 3488 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 919 "./util/configparser.y" + case 317: +#line 920 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3495,53 +3496,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3499 "util/configparser.c" +#line 3500 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 928 "./util/configparser.y" + case 318: +#line 929 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3510 "util/configparser.c" +#line 3511 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 936 "./util/configparser.y" + case 319: +#line 937 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3520 "util/configparser.c" +#line 3521 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 943 "./util/configparser.y" + case 320: +#line 944 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3530 "util/configparser.c" +#line 3531 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 950 "./util/configparser.y" + case 321: +#line 951 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3541 "util/configparser.c" +#line 3542 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 958 "./util/configparser.y" + case 322: +#line 959 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3549,11 +3550,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3553 "util/configparser.c" +#line 3554 "util/configparser.c" /* yacc.c:1646 */ break; - case 322: -#line 967 "./util/configparser.y" + case 323: +#line 968 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3561,11 +3562,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3565 "util/configparser.c" +#line 3566 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 976 "./util/configparser.y" + case 324: +#line 977 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3573,11 +3574,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3577 "util/configparser.c" +#line 3578 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 985 "./util/configparser.y" + case 325: +#line 986 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3590,11 +3591,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3594 "util/configparser.c" +#line 3595 "util/configparser.c" /* yacc.c:1646 */ break; - case 325: -#line 999 "./util/configparser.y" + case 326: +#line 1000 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3602,11 +3603,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3606 "util/configparser.c" +#line 3607 "util/configparser.c" /* yacc.c:1646 */ break; - case 326: -#line 1008 "./util/configparser.y" + case 327: +#line 1009 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3614,11 +3615,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3618 "util/configparser.c" +#line 3619 "util/configparser.c" /* yacc.c:1646 */ break; - case 327: -#line 1017 "./util/configparser.y" + case 328: +#line 1018 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3626,11 +3627,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3630 "util/configparser.c" +#line 3631 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1026 "./util/configparser.y" + case 329: +#line 1027 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3638,11 +3639,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3642 "util/configparser.c" +#line 3643 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1035 "./util/configparser.y" + case 330: +#line 1036 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3650,11 +3651,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3654 "util/configparser.c" +#line 3655 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1044 "./util/configparser.y" + case 331: +#line 1045 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3662,31 +3663,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 3667 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1053 "./util/configparser.y" + case 332: +#line 1054 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3676 "util/configparser.c" +#line 3677 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1060 "./util/configparser.y" + case 333: +#line 1061 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3686 "util/configparser.c" +#line 3687 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1067 "./util/configparser.y" + case 334: +#line 1068 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3711,105 +3712,105 @@ yyreduce: } } } -#line 3715 "util/configparser.c" +#line 3716 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1093 "./util/configparser.y" + case 335: +#line 1094 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3726 "util/configparser.c" +#line 3727 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1101 "./util/configparser.y" + case 336: +#line 1102 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3736 "util/configparser.c" +#line 3737 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1108 "./util/configparser.y" + case 337: +#line 1109 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3746 "util/configparser.c" +#line 3747 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1115 "./util/configparser.y" + case 338: +#line 1116 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3756 "util/configparser.c" +#line 3757 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1122 "./util/configparser.y" + case 339: +#line 1123 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3766 "util/configparser.c" +#line 3767 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1129 "./util/configparser.y" + case 340: +#line 1130 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3777 "util/configparser.c" +#line 3778 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1137 "./util/configparser.y" + case 341: +#line 1138 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3788 "util/configparser.c" +#line 3789 "util/configparser.c" /* yacc.c:1646 */ break; - case 341: -#line 1145 "./util/configparser.y" + case 342: +#line 1146 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3799 "util/configparser.c" +#line 3800 "util/configparser.c" /* yacc.c:1646 */ break; - case 342: -#line 1153 "./util/configparser.y" + case 343: +#line 1154 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3809 "util/configparser.c" +#line 3810 "util/configparser.c" /* yacc.c:1646 */ break; - case 343: -#line 1160 "./util/configparser.y" + case 344: +#line 1161 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3819,11 +3820,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3824 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1171 "./util/configparser.y" + case 345: +#line 1172 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3833,21 +3834,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3837 "util/configparser.c" +#line 3838 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1182 "./util/configparser.y" + case 346: +#line 1183 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3847 "util/configparser.c" +#line 3848 "util/configparser.c" /* yacc.c:1646 */ break; - case 346: -#line 1189 "./util/configparser.y" + case 347: +#line 1190 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3855,11 +3856,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3860 "util/configparser.c" /* yacc.c:1646 */ break; - case 347: -#line 1198 "./util/configparser.y" + case 348: +#line 1199 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3867,11 +3868,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3872 "util/configparser.c" /* yacc.c:1646 */ break; - case 348: -#line 1207 "./util/configparser.y" + case 349: +#line 1208 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3879,53 +3880,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3884 "util/configparser.c" /* yacc.c:1646 */ break; - case 349: -#line 1216 "./util/configparser.y" + case 350: +#line 1217 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3893 "util/configparser.c" +#line 3894 "util/configparser.c" /* yacc.c:1646 */ break; - case 350: -#line 1223 "./util/configparser.y" + case 351: +#line 1224 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3903 "util/configparser.c" +#line 3904 "util/configparser.c" /* yacc.c:1646 */ break; - case 351: -#line 1230 "./util/configparser.y" + case 352: +#line 1231 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3914 "util/configparser.c" +#line 3915 "util/configparser.c" /* yacc.c:1646 */ break; - case 352: -#line 1238 "./util/configparser.y" + case 353: +#line 1239 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3925 "util/configparser.c" +#line 3926 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1246 "./util/configparser.y" + case 354: +#line 1247 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3934,11 +3935,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3938 "util/configparser.c" +#line 3939 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1256 "./util/configparser.y" + case 355: +#line 1257 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3947,11 +3948,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3951 "util/configparser.c" +#line 3952 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1266 "./util/configparser.y" + case 356: +#line 1267 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3960,11 +3961,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3964 "util/configparser.c" +#line 3965 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1276 "./util/configparser.y" + case 357: +#line 1277 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3977,22 +3978,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3981 "util/configparser.c" +#line 3982 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1290 "./util/configparser.y" + case 358: +#line 1291 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3992 "util/configparser.c" +#line 3993 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1298 "./util/configparser.y" + case 359: +#line 1299 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4004,11 +4005,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4008 "util/configparser.c" +#line 4009 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1311 "./util/configparser.y" + case 360: +#line 1312 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4018,22 +4019,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4022 "util/configparser.c" +#line 4023 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1322 "./util/configparser.y" + case 361: +#line 1323 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4033 "util/configparser.c" +#line 4034 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1330 "./util/configparser.y" + case 362: +#line 1331 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4045,11 +4046,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4049 "util/configparser.c" +#line 4050 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1343 "./util/configparser.y" + case 363: +#line 1344 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4057,11 +4058,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4061 "util/configparser.c" +#line 4062 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1352 "./util/configparser.y" + case 364: +#line 1353 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4069,11 +4070,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4073 "util/configparser.c" +#line 4074 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1361 "./util/configparser.y" + case 365: +#line 1362 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4081,11 +4082,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4085 "util/configparser.c" +#line 4086 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1370 "./util/configparser.y" + case 366: +#line 1371 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4094,11 +4095,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4098 "util/configparser.c" +#line 4099 "util/configparser.c" /* yacc.c:1646 */ break; - case 366: -#line 1380 "./util/configparser.y" + case 367: +#line 1381 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4107,22 +4108,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4111 "util/configparser.c" +#line 4112 "util/configparser.c" /* yacc.c:1646 */ break; - case 367: -#line 1390 "./util/configparser.y" + case 368: +#line 1391 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4122 "util/configparser.c" +#line 4123 "util/configparser.c" /* yacc.c:1646 */ break; - case 368: -#line 1398 "./util/configparser.y" + case 369: +#line 1399 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4134,11 +4135,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4138 "util/configparser.c" +#line 4139 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1411 "./util/configparser.y" + case 370: +#line 1412 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4146,22 +4147,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4150 "util/configparser.c" +#line 4151 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1420 "./util/configparser.y" + case 371: +#line 1421 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4161 "util/configparser.c" +#line 4162 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 1428 "./util/configparser.y" + case 372: +#line 1429 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4169,22 +4170,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4174 "util/configparser.c" /* yacc.c:1646 */ break; - case 372: -#line 1437 "./util/configparser.y" + case 373: +#line 1438 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4184 "util/configparser.c" +#line 4185 "util/configparser.c" /* yacc.c:1646 */ break; - case 373: -#line 1445 "./util/configparser.y" + case 374: +#line 1446 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4196,11 +4197,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4200 "util/configparser.c" +#line 4201 "util/configparser.c" /* yacc.c:1646 */ break; - case 374: -#line 1458 "./util/configparser.y" + case 375: +#line 1459 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4208,21 +4209,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4212 "util/configparser.c" +#line 4213 "util/configparser.c" /* yacc.c:1646 */ break; - case 375: -#line 1467 "./util/configparser.y" + case 376: +#line 1468 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4222 "util/configparser.c" +#line 4223 "util/configparser.c" /* yacc.c:1646 */ break; - case 376: -#line 1474 "./util/configparser.y" + case 377: +#line 1475 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4231,11 +4232,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" +#line 4236 "util/configparser.c" /* yacc.c:1646 */ break; - case 377: -#line 1484 "./util/configparser.y" + case 378: +#line 1485 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4244,11 +4245,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4248 "util/configparser.c" +#line 4249 "util/configparser.c" /* yacc.c:1646 */ break; - case 378: -#line 1494 "./util/configparser.y" + case 379: +#line 1495 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4257,11 +4258,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4261 "util/configparser.c" +#line 4262 "util/configparser.c" /* yacc.c:1646 */ break; - case 379: -#line 1504 "./util/configparser.y" + case 380: +#line 1505 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4270,11 +4271,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4274 "util/configparser.c" +#line 4275 "util/configparser.c" /* yacc.c:1646 */ break; - case 380: -#line 1514 "./util/configparser.y" + case 381: +#line 1515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4283,11 +4284,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4287 "util/configparser.c" +#line 4288 "util/configparser.c" /* yacc.c:1646 */ break; - case 381: -#line 1524 "./util/configparser.y" + case 382: +#line 1525 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4296,11 +4297,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4300 "util/configparser.c" +#line 4301 "util/configparser.c" /* yacc.c:1646 */ break; - case 382: -#line 1534 "./util/configparser.y" + case 383: +#line 1535 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4309,11 +4310,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4313 "util/configparser.c" +#line 4314 "util/configparser.c" /* yacc.c:1646 */ break; - case 383: -#line 1544 "./util/configparser.y" + case 384: +#line 1545 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4322,41 +4323,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4326 "util/configparser.c" +#line 4327 "util/configparser.c" /* yacc.c:1646 */ break; - case 384: -#line 1554 "./util/configparser.y" + case 385: +#line 1555 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4336 "util/configparser.c" +#line 4337 "util/configparser.c" /* yacc.c:1646 */ break; - case 385: -#line 1561 "./util/configparser.y" + case 386: +#line 1562 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4346 "util/configparser.c" +#line 4347 "util/configparser.c" /* yacc.c:1646 */ break; - case 386: -#line 1568 "./util/configparser.y" + case 387: +#line 1569 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4356 "util/configparser.c" +#line 4357 "util/configparser.c" /* yacc.c:1646 */ break; - case 387: -#line 1575 "./util/configparser.y" + case 388: +#line 1576 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4364,11 +4365,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4368 "util/configparser.c" +#line 4369 "util/configparser.c" /* yacc.c:1646 */ break; - case 388: -#line 1584 "./util/configparser.y" + case 389: +#line 1585 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4376,11 +4377,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4380 "util/configparser.c" +#line 4381 "util/configparser.c" /* yacc.c:1646 */ break; - case 389: -#line 1593 "./util/configparser.y" + case 390: +#line 1594 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4388,11 +4389,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4392 "util/configparser.c" +#line 4393 "util/configparser.c" /* yacc.c:1646 */ break; - case 390: -#line 1602 "./util/configparser.y" + case 391: +#line 1603 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4400,21 +4401,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4404 "util/configparser.c" +#line 4405 "util/configparser.c" /* yacc.c:1646 */ break; - case 391: -#line 1611 "./util/configparser.y" + case 392: +#line 1612 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4414 "util/configparser.c" +#line 4415 "util/configparser.c" /* yacc.c:1646 */ break; - case 392: -#line 1618 "./util/configparser.y" + case 393: +#line 1619 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4423,11 +4424,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4427 "util/configparser.c" +#line 4428 "util/configparser.c" /* yacc.c:1646 */ break; - case 393: -#line 1628 "./util/configparser.y" + case 394: +#line 1629 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4446,21 +4447,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4450 "util/configparser.c" +#line 4451 "util/configparser.c" /* yacc.c:1646 */ break; - case 394: -#line 1648 "./util/configparser.y" + case 395: +#line 1649 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4460 "util/configparser.c" +#line 4461 "util/configparser.c" /* yacc.c:1646 */ break; - case 395: -#line 1655 "./util/configparser.y" + case 396: +#line 1656 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4477,11 +4478,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4481 "util/configparser.c" +#line 4482 "util/configparser.c" /* yacc.c:1646 */ break; - case 396: -#line 1673 "./util/configparser.y" + case 397: +#line 1674 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4493,11 +4494,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4497 "util/configparser.c" +#line 4498 "util/configparser.c" /* yacc.c:1646 */ break; - case 397: -#line 1686 "./util/configparser.y" + case 398: +#line 1687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4509,11 +4510,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4513 "util/configparser.c" +#line 4514 "util/configparser.c" /* yacc.c:1646 */ break; - case 398: -#line 1699 "./util/configparser.y" + case 399: +#line 1700 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4521,11 +4522,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4525 "util/configparser.c" +#line 4526 "util/configparser.c" /* yacc.c:1646 */ break; - case 399: -#line 1708 "./util/configparser.y" + case 400: +#line 1709 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4533,11 +4534,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4537 "util/configparser.c" +#line 4538 "util/configparser.c" /* yacc.c:1646 */ break; - case 400: -#line 1717 "./util/configparser.y" + case 401: +#line 1718 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4545,11 +4546,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4549 "util/configparser.c" +#line 4550 "util/configparser.c" /* yacc.c:1646 */ break; - case 401: -#line 1726 "./util/configparser.y" + case 402: +#line 1727 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4557,11 +4558,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4561 "util/configparser.c" +#line 4562 "util/configparser.c" /* yacc.c:1646 */ break; - case 402: -#line 1735 "./util/configparser.y" + case 403: +#line 1736 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4570,11 +4571,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4574 "util/configparser.c" +#line 4575 "util/configparser.c" /* yacc.c:1646 */ break; - case 403: -#line 1745 "./util/configparser.y" + case 404: +#line 1746 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4583,11 +4584,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4587 "util/configparser.c" +#line 4588 "util/configparser.c" /* yacc.c:1646 */ break; - case 404: -#line 1755 "./util/configparser.y" + case 405: +#line 1756 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4597,11 +4598,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4601 "util/configparser.c" +#line 4602 "util/configparser.c" /* yacc.c:1646 */ break; - case 405: -#line 1766 "./util/configparser.y" + case 406: +#line 1767 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4609,11 +4610,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4613 "util/configparser.c" +#line 4614 "util/configparser.c" /* yacc.c:1646 */ break; - case 406: -#line 1775 "./util/configparser.y" + case 407: +#line 1776 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4621,11 +4622,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4626 "util/configparser.c" /* yacc.c:1646 */ break; - case 407: -#line 1784 "./util/configparser.y" + case 408: +#line 1785 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4633,11 +4634,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4638 "util/configparser.c" /* yacc.c:1646 */ break; - case 408: -#line 1793 "./util/configparser.y" + case 409: +#line 1794 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4645,11 +4646,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4650 "util/configparser.c" /* yacc.c:1646 */ break; - case 409: -#line 1802 "./util/configparser.y" + case 410: +#line 1803 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4657,11 +4658,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4662 "util/configparser.c" /* yacc.c:1646 */ break; - case 410: -#line 1811 "./util/configparser.y" + case 411: +#line 1812 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4669,11 +4670,23 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4674 "util/configparser.c" /* yacc.c:1646 */ break; - case 411: -#line 1820 "./util/configparser.y" + case 412: +#line 1821 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4686 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 413: +#line 1830 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4685,11 +4698,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4689 "util/configparser.c" +#line 4702 "util/configparser.c" /* yacc.c:1646 */ break; - case 412: -#line 1833 "./util/configparser.y" + case 414: +#line 1843 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4701,11 +4714,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4705 "util/configparser.c" +#line 4718 "util/configparser.c" /* yacc.c:1646 */ break; - case 413: -#line 1846 "./util/configparser.y" + case 415: +#line 1856 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4713,21 +4726,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4717 "util/configparser.c" +#line 4730 "util/configparser.c" /* yacc.c:1646 */ break; - case 414: -#line 1855 "./util/configparser.y" + case 416: +#line 1865 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4727 "util/configparser.c" +#line 4740 "util/configparser.c" /* yacc.c:1646 */ break; - case 415: -#line 1862 "./util/configparser.y" + case 417: +#line 1872 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4735,11 +4748,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4739 "util/configparser.c" +#line 4752 "util/configparser.c" /* yacc.c:1646 */ break; - case 416: -#line 1871 "./util/configparser.y" + case 418: +#line 1881 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4747,11 +4760,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4751 "util/configparser.c" +#line 4764 "util/configparser.c" /* yacc.c:1646 */ break; - case 417: -#line 1880 "./util/configparser.y" + case 419: +#line 1890 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4759,11 +4772,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4763 "util/configparser.c" +#line 4776 "util/configparser.c" /* yacc.c:1646 */ break; - case 418: -#line 1889 "./util/configparser.y" + case 420: +#line 1899 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4772,22 +4785,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4776 "util/configparser.c" +#line 4789 "util/configparser.c" /* yacc.c:1646 */ break; - case 419: -#line 1898 "./util/configparser.y" + case 421: +#line 1908 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4787 "util/configparser.c" +#line 4800 "util/configparser.c" /* yacc.c:1646 */ break; - case 420: -#line 1906 "./util/configparser.y" + case 422: +#line 1916 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4799,22 +4812,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4816 "util/configparser.c" /* yacc.c:1646 */ break; - case 421: -#line 1919 "./util/configparser.y" + case 423: +#line 1929 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4814 "util/configparser.c" +#line 4827 "util/configparser.c" /* yacc.c:1646 */ break; - case 422: -#line 1927 "./util/configparser.y" + case 424: +#line 1937 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4854,21 +4867,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4858 "util/configparser.c" +#line 4871 "util/configparser.c" /* yacc.c:1646 */ break; - case 423: -#line 1968 "./util/configparser.y" + case 425: +#line 1978 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4868 "util/configparser.c" +#line 4881 "util/configparser.c" /* yacc.c:1646 */ break; - case 424: -#line 1975 "./util/configparser.y" + case 426: +#line 1985 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4882,11 +4895,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4886 "util/configparser.c" +#line 4899 "util/configparser.c" /* yacc.c:1646 */ break; - case 425: -#line 1990 "./util/configparser.y" + case 427: +#line 2000 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4895,11 +4908,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4912 "util/configparser.c" /* yacc.c:1646 */ break; - case 426: -#line 2000 "./util/configparser.y" + case 428: +#line 2010 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4908,41 +4921,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4912 "util/configparser.c" +#line 4925 "util/configparser.c" /* yacc.c:1646 */ break; - case 427: -#line 2010 "./util/configparser.y" + case 429: +#line 2020 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4922 "util/configparser.c" +#line 4935 "util/configparser.c" /* yacc.c:1646 */ break; - case 428: -#line 2017 "./util/configparser.y" + case 430: +#line 2027 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4945 "util/configparser.c" /* yacc.c:1646 */ break; - case 429: -#line 2024 "./util/configparser.y" + case 431: +#line 2034 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4942 "util/configparser.c" +#line 4955 "util/configparser.c" /* yacc.c:1646 */ break; - case 430: -#line 2031 "./util/configparser.y" + case 432: +#line 2041 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4950,22 +4963,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 4967 "util/configparser.c" /* yacc.c:1646 */ break; - case 431: -#line 2040 "./util/configparser.y" + case 433: +#line 2050 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4965 "util/configparser.c" +#line 4978 "util/configparser.c" /* yacc.c:1646 */ break; - case 432: -#line 2048 "./util/configparser.y" + case 434: +#line 2058 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4978,11 +4991,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4982 "util/configparser.c" +#line 4995 "util/configparser.c" /* yacc.c:1646 */ break; - case 433: -#line 2062 "./util/configparser.y" + case 435: +#line 2072 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5002,11 +5015,11 @@ yyreduce: } } } -#line 5006 "util/configparser.c" +#line 5019 "util/configparser.c" /* yacc.c:1646 */ break; - case 434: -#line 2083 "./util/configparser.y" + case 436: +#line 2093 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5026,11 +5039,11 @@ yyreduce: } } } -#line 5030 "util/configparser.c" +#line 5043 "util/configparser.c" /* yacc.c:1646 */ break; - case 435: -#line 2104 "./util/configparser.y" + case 437: +#line 2114 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5041,11 +5054,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5045 "util/configparser.c" +#line 5058 "util/configparser.c" /* yacc.c:1646 */ break; - case 436: -#line 2116 "./util/configparser.y" + case 438: +#line 2126 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5056,11 +5069,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5060 "util/configparser.c" +#line 5073 "util/configparser.c" /* yacc.c:1646 */ break; - case 437: -#line 2128 "./util/configparser.y" + case 439: +#line 2138 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5071,11 +5084,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5075 "util/configparser.c" +#line 5088 "util/configparser.c" /* yacc.c:1646 */ break; - case 438: -#line 2140 "./util/configparser.y" + case 440: +#line 2150 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5083,11 +5096,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5087 "util/configparser.c" +#line 5100 "util/configparser.c" /* yacc.c:1646 */ break; - case 439: -#line 2149 "./util/configparser.y" + case 441: +#line 2159 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5107,11 +5120,11 @@ yyreduce: } } } -#line 5111 "util/configparser.c" +#line 5124 "util/configparser.c" /* yacc.c:1646 */ break; - case 440: -#line 2170 "./util/configparser.y" + case 442: +#line 2180 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5119,11 +5132,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5123 "util/configparser.c" +#line 5136 "util/configparser.c" /* yacc.c:1646 */ break; - case 441: -#line 2180 "./util/configparser.y" + case 443: +#line 2190 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5131,33 +5144,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5135 "util/configparser.c" +#line 5148 "util/configparser.c" /* yacc.c:1646 */ break; - case 442: -#line 2189 "./util/configparser.y" + case 444: +#line 2199 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5146 "util/configparser.c" +#line 5159 "util/configparser.c" /* yacc.c:1646 */ break; - case 443: -#line 2197 "./util/configparser.y" + case 445: +#line 2207 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5157 "util/configparser.c" +#line 5170 "util/configparser.c" /* yacc.c:1646 */ break; - case 444: -#line 2205 "./util/configparser.y" + case 446: +#line 2215 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5169,11 +5182,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5173 "util/configparser.c" +#line 5186 "util/configparser.c" /* yacc.c:1646 */ break; - case 445: -#line 2218 "./util/configparser.y" + case 447: +#line 2228 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5185,11 +5198,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5189 "util/configparser.c" +#line 5202 "util/configparser.c" /* yacc.c:1646 */ break; - case 446: -#line 2231 "./util/configparser.y" + case 448: +#line 2241 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5203,11 +5216,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5207 "util/configparser.c" +#line 5220 "util/configparser.c" /* yacc.c:1646 */ break; - case 447: -#line 2246 "./util/configparser.y" + case 449: +#line 2256 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5221,11 +5234,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5225 "util/configparser.c" +#line 5238 "util/configparser.c" /* yacc.c:1646 */ break; - case 448: -#line 2261 "./util/configparser.y" + case 450: +#line 2271 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5233,11 +5246,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5237 "util/configparser.c" +#line 5250 "util/configparser.c" /* yacc.c:1646 */ break; - case 449: -#line 2270 "./util/configparser.y" + case 451: +#line 2280 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5245,20 +5258,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5249 "util/configparser.c" +#line 5262 "util/configparser.c" /* yacc.c:1646 */ break; - case 450: -#line 2279 "./util/configparser.y" + case 452: +#line 2289 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5271 "util/configparser.c" /* yacc.c:1646 */ break; - case 451: -#line 2285 "./util/configparser.y" + case 453: +#line 2295 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5266,11 +5279,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5270 "util/configparser.c" +#line 5283 "util/configparser.c" /* yacc.c:1646 */ break; - case 452: -#line 2294 "./util/configparser.y" + case 454: +#line 2304 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5278,11 +5291,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5282 "util/configparser.c" +#line 5295 "util/configparser.c" /* yacc.c:1646 */ break; - case 453: -#line 2303 "./util/configparser.y" + case 455: +#line 2313 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5291,11 +5304,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5295 "util/configparser.c" +#line 5308 "util/configparser.c" /* yacc.c:1646 */ break; - case 454: -#line 2313 "./util/configparser.y" + case 456: +#line 2323 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5304,11 +5317,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5308 "util/configparser.c" +#line 5321 "util/configparser.c" /* yacc.c:1646 */ break; - case 455: -#line 2323 "./util/configparser.y" + case 457: +#line 2333 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5320,11 +5333,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" +#line 5337 "util/configparser.c" /* yacc.c:1646 */ break; - case 456: -#line 2336 "./util/configparser.y" + case 458: +#line 2346 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5336,11 +5349,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5340 "util/configparser.c" +#line 5353 "util/configparser.c" /* yacc.c:1646 */ break; - case 457: -#line 2349 "./util/configparser.y" + case 459: +#line 2359 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5351,11 +5364,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5355 "util/configparser.c" +#line 5368 "util/configparser.c" /* yacc.c:1646 */ break; - case 458: -#line 2361 "./util/configparser.y" + case 460: +#line 2371 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5368,11 +5381,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5372 "util/configparser.c" +#line 5385 "util/configparser.c" /* yacc.c:1646 */ break; - case 459: -#line 2375 "./util/configparser.y" + case 461: +#line 2385 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5383,11 +5396,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5387 "util/configparser.c" +#line 5400 "util/configparser.c" /* yacc.c:1646 */ break; - case 460: -#line 2387 "./util/configparser.y" + case 462: +#line 2397 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5400,11 +5413,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5404 "util/configparser.c" +#line 5417 "util/configparser.c" /* yacc.c:1646 */ break; - case 461: -#line 2401 "./util/configparser.y" + case 463: +#line 2411 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5413,31 +5426,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5417 "util/configparser.c" +#line 5430 "util/configparser.c" /* yacc.c:1646 */ break; - case 462: -#line 2411 "./util/configparser.y" + case 464: +#line 2421 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5427 "util/configparser.c" +#line 5440 "util/configparser.c" /* yacc.c:1646 */ break; - case 463: -#line 2418 "./util/configparser.y" + case 465: +#line 2428 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5437 "util/configparser.c" +#line 5450 "util/configparser.c" /* yacc.c:1646 */ break; - case 464: -#line 2425 "./util/configparser.y" + case 466: +#line 2435 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5445,11 +5458,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5449 "util/configparser.c" +#line 5462 "util/configparser.c" /* yacc.c:1646 */ break; - case 465: -#line 2434 "./util/configparser.y" + case 467: +#line 2444 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5457,11 +5470,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5461 "util/configparser.c" +#line 5474 "util/configparser.c" /* yacc.c:1646 */ break; - case 466: -#line 2443 "./util/configparser.y" + case 468: +#line 2453 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5470,11 +5483,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5474 "util/configparser.c" +#line 5487 "util/configparser.c" /* yacc.c:1646 */ break; - case 467: -#line 2453 "./util/configparser.y" + case 469: +#line 2463 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5483,11 +5496,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5500 "util/configparser.c" /* yacc.c:1646 */ break; - case 468: -#line 2463 "./util/configparser.y" + case 470: +#line 2473 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5496,31 +5509,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5500 "util/configparser.c" +#line 5513 "util/configparser.c" /* yacc.c:1646 */ break; - case 469: -#line 2473 "./util/configparser.y" + case 471: +#line 2483 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5510 "util/configparser.c" +#line 5523 "util/configparser.c" /* yacc.c:1646 */ break; - case 470: -#line 2480 "./util/configparser.y" + case 472: +#line 2490 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5520 "util/configparser.c" +#line 5533 "util/configparser.c" /* yacc.c:1646 */ break; - case 471: -#line 2487 "./util/configparser.y" + case 473: +#line 2497 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5528,11 +5541,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5532 "util/configparser.c" +#line 5545 "util/configparser.c" /* yacc.c:1646 */ break; - case 472: -#line 2496 "./util/configparser.y" + case 474: +#line 2506 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5540,11 +5553,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5544 "util/configparser.c" +#line 5557 "util/configparser.c" /* yacc.c:1646 */ break; - case 473: -#line 2505 "./util/configparser.y" + case 475: +#line 2515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5553,11 +5566,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5557 "util/configparser.c" +#line 5570 "util/configparser.c" /* yacc.c:1646 */ break; - case 474: -#line 2515 "./util/configparser.y" + case 476: +#line 2525 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5566,52 +5579,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5570 "util/configparser.c" +#line 5583 "util/configparser.c" /* yacc.c:1646 */ break; - case 475: -#line 2525 "./util/configparser.y" + case 477: +#line 2535 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5580 "util/configparser.c" +#line 5593 "util/configparser.c" /* yacc.c:1646 */ break; - case 476: -#line 2532 "./util/configparser.y" + case 478: +#line 2542 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5590 "util/configparser.c" +#line 5603 "util/configparser.c" /* yacc.c:1646 */ break; - case 477: -#line 2539 "./util/configparser.y" + case 479: +#line 2549 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5600 "util/configparser.c" +#line 5613 "util/configparser.c" /* yacc.c:1646 */ break; - case 478: -#line 2546 "./util/configparser.y" + case 480: +#line 2556 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5611 "util/configparser.c" +#line 5624 "util/configparser.c" /* yacc.c:1646 */ break; - case 479: -#line 2554 "./util/configparser.y" + case 481: +#line 2564 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5620,11 +5633,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5624 "util/configparser.c" +#line 5637 "util/configparser.c" /* yacc.c:1646 */ break; - case 480: -#line 2564 "./util/configparser.y" + case 482: +#line 2574 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5633,11 +5646,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5637 "util/configparser.c" +#line 5650 "util/configparser.c" /* yacc.c:1646 */ break; - case 481: -#line 2574 "./util/configparser.y" + case 483: +#line 2584 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5646,11 +5659,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5650 "util/configparser.c" +#line 5663 "util/configparser.c" /* yacc.c:1646 */ break; - case 482: -#line 2584 "./util/configparser.y" + case 484: +#line 2594 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5659,11 +5672,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5663 "util/configparser.c" +#line 5676 "util/configparser.c" /* yacc.c:1646 */ break; - case 483: -#line 2594 "./util/configparser.y" + case 485: +#line 2604 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5701,11 +5714,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5705 "util/configparser.c" +#line 5718 "util/configparser.c" /* yacc.c:1646 */ break; - case 484: -#line 2633 "./util/configparser.y" + case 486: +#line 2643 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5714,33 +5727,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5718 "util/configparser.c" +#line 5731 "util/configparser.c" /* yacc.c:1646 */ break; - case 485: -#line 2643 "./util/configparser.y" + case 487: +#line 2653 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5729 "util/configparser.c" +#line 5742 "util/configparser.c" /* yacc.c:1646 */ break; - case 486: -#line 2651 "./util/configparser.y" + case 488: +#line 2661 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5740 "util/configparser.c" +#line 5753 "util/configparser.c" /* yacc.c:1646 */ break; - case 487: -#line 2659 "./util/configparser.y" + case 489: +#line 2669 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5754,11 +5767,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5758 "util/configparser.c" +#line 5771 "util/configparser.c" /* yacc.c:1646 */ break; - case 488: -#line 2674 "./util/configparser.y" + case 490: +#line 2684 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5766,19 +5779,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5770 "util/configparser.c" +#line 5783 "util/configparser.c" /* yacc.c:1646 */ break; - case 489: -#line 2683 "./util/configparser.y" + case 491: +#line 2693 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5778 "util/configparser.c" +#line 5791 "util/configparser.c" /* yacc.c:1646 */ break; - case 500: -#line 2694 "./util/configparser.y" + case 502: +#line 2704 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5787,11 +5800,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5791 "util/configparser.c" +#line 5804 "util/configparser.c" /* yacc.c:1646 */ break; - case 501: -#line 2704 "./util/configparser.y" + case 503: +#line 2714 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5799,79 +5812,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5803 "util/configparser.c" +#line 5816 "util/configparser.c" /* yacc.c:1646 */ break; - case 502: -#line 2713 "./util/configparser.y" + case 504: +#line 2723 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5813 "util/configparser.c" +#line 5826 "util/configparser.c" /* yacc.c:1646 */ break; - case 503: -#line 2720 "./util/configparser.y" + case 505: +#line 2730 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5823 "util/configparser.c" +#line 5836 "util/configparser.c" /* yacc.c:1646 */ break; - case 504: -#line 2727 "./util/configparser.y" + case 506: +#line 2737 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5833 "util/configparser.c" +#line 5846 "util/configparser.c" /* yacc.c:1646 */ break; - case 505: -#line 2734 "./util/configparser.y" + case 507: +#line 2744 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5843 "util/configparser.c" +#line 5856 "util/configparser.c" /* yacc.c:1646 */ break; - case 506: -#line 2741 "./util/configparser.y" + case 508: +#line 2751 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5853 "util/configparser.c" +#line 5866 "util/configparser.c" /* yacc.c:1646 */ break; - case 507: -#line 2748 "./util/configparser.y" + case 509: +#line 2758 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5863 "util/configparser.c" +#line 5876 "util/configparser.c" /* yacc.c:1646 */ break; - case 508: -#line 2755 "./util/configparser.y" + case 510: +#line 2765 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5871 "util/configparser.c" +#line 5884 "util/configparser.c" /* yacc.c:1646 */ break; - case 529: -#line 2775 "./util/configparser.y" + case 531: +#line 2785 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5879,31 +5892,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5883 "util/configparser.c" +#line 5896 "util/configparser.c" /* yacc.c:1646 */ break; - case 530: -#line 2784 "./util/configparser.y" + case 532: +#line 2794 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 5893 "util/configparser.c" +#line 5906 "util/configparser.c" /* yacc.c:1646 */ break; - case 531: -#line 2791 "./util/configparser.y" + case 533: +#line 2801 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 5903 "util/configparser.c" +#line 5916 "util/configparser.c" /* yacc.c:1646 */ break; - case 532: -#line 2798 "./util/configparser.y" + case 534: +#line 2808 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5911,51 +5924,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 5928 "util/configparser.c" /* yacc.c:1646 */ break; - case 533: -#line 2807 "./util/configparser.y" + case 535: +#line 2817 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 5925 "util/configparser.c" +#line 5938 "util/configparser.c" /* yacc.c:1646 */ break; - case 534: -#line 2814 "./util/configparser.y" + case 536: +#line 2824 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 5935 "util/configparser.c" +#line 5948 "util/configparser.c" /* yacc.c:1646 */ break; - case 535: -#line 2821 "./util/configparser.y" + case 537: +#line 2831 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 5945 "util/configparser.c" +#line 5958 "util/configparser.c" /* yacc.c:1646 */ break; - case 536: -#line 2828 "./util/configparser.y" + case 538: +#line 2838 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 5955 "util/configparser.c" +#line 5968 "util/configparser.c" /* yacc.c:1646 */ break; - case 537: -#line 2835 "./util/configparser.y" + case 539: +#line 2845 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5963,11 +5976,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5967 "util/configparser.c" +#line 5980 "util/configparser.c" /* yacc.c:1646 */ break; - case 538: -#line 2844 "./util/configparser.y" + case 540: +#line 2854 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5975,31 +5988,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5979 "util/configparser.c" +#line 5992 "util/configparser.c" /* yacc.c:1646 */ break; - case 539: -#line 2853 "./util/configparser.y" + case 541: +#line 2863 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 5989 "util/configparser.c" +#line 6002 "util/configparser.c" /* yacc.c:1646 */ break; - case 540: -#line 2860 "./util/configparser.y" + case 542: +#line 2870 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 5999 "util/configparser.c" +#line 6012 "util/configparser.c" /* yacc.c:1646 */ break; - case 541: -#line 2867 "./util/configparser.y" + case 543: +#line 2877 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6008,11 +6021,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6012 "util/configparser.c" +#line 6025 "util/configparser.c" /* yacc.c:1646 */ break; - case 542: -#line 2877 "./util/configparser.y" + case 544: +#line 2887 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6021,11 +6034,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 6038 "util/configparser.c" /* yacc.c:1646 */ break; - case 543: -#line 2887 "./util/configparser.y" + case 545: +#line 2897 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6034,11 +6047,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6038 "util/configparser.c" +#line 6051 "util/configparser.c" /* yacc.c:1646 */ break; - case 544: -#line 2897 "./util/configparser.y" + case 546: +#line 2907 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6047,11 +6060,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6051 "util/configparser.c" +#line 6064 "util/configparser.c" /* yacc.c:1646 */ break; - case 545: -#line 2907 "./util/configparser.y" + case 547: +#line 2917 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6060,11 +6073,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 6077 "util/configparser.c" /* yacc.c:1646 */ break; - case 546: -#line 2917 "./util/configparser.y" + case 548: +#line 2927 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6073,47 +6086,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6077 "util/configparser.c" +#line 6090 "util/configparser.c" /* yacc.c:1646 */ break; - case 547: -#line 2927 "./util/configparser.y" + case 549: +#line 2937 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 6085 "util/configparser.c" +#line 6098 "util/configparser.c" /* yacc.c:1646 */ break; - case 551: -#line 2936 "./util/configparser.y" + case 553: +#line 2946 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6095 "util/configparser.c" +#line 6108 "util/configparser.c" /* yacc.c:1646 */ break; - case 552: -#line 2942 "./util/configparser.y" + case 554: +#line 2952 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dynlib:)\n")); } -#line 6103 "util/configparser.c" +#line 6116 "util/configparser.c" /* yacc.c:1646 */ break; - case 556: -#line 2951 "./util/configparser.y" + case 558: +#line 2961 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6113 "util/configparser.c" +#line 6126 "util/configparser.c" /* yacc.c:1646 */ break; - case 557: -#line 2957 "./util/configparser.y" + case 559: +#line 2967 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6122,21 +6135,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6126 "util/configparser.c" +#line 6139 "util/configparser.c" /* yacc.c:1646 */ break; - case 558: -#line 2967 "./util/configparser.y" + case 560: +#line 2977 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6136 "util/configparser.c" +#line 6149 "util/configparser.c" /* yacc.c:1646 */ break; - case 559: -#line 2974 "./util/configparser.y" + case 561: +#line 2984 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6144,30 +6157,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6148 "util/configparser.c" +#line 6161 "util/configparser.c" /* yacc.c:1646 */ break; - case 560: -#line 2983 "./util/configparser.y" + case 562: +#line 2993 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6159 "util/configparser.c" +#line 6172 "util/configparser.c" /* yacc.c:1646 */ break; - case 561: -#line 2991 "./util/configparser.y" + case 563: +#line 3001 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6167 "util/configparser.c" +#line 6180 "util/configparser.c" /* yacc.c:1646 */ break; - case 574: -#line 3007 "./util/configparser.y" + case 576: +#line 3017 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6175,11 +6188,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6179 "util/configparser.c" +#line 6192 "util/configparser.c" /* yacc.c:1646 */ break; - case 575: -#line 3017 "./util/configparser.y" + case 577: +#line 3027 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6187,21 +6200,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6191 "util/configparser.c" +#line 6204 "util/configparser.c" /* yacc.c:1646 */ break; - case 576: -#line 3026 "./util/configparser.y" + case 578: +#line 3036 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6201 "util/configparser.c" +#line 6214 "util/configparser.c" /* yacc.c:1646 */ break; - case 577: -#line 3033 "./util/configparser.y" + case 579: +#line 3043 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6209,21 +6222,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6213 "util/configparser.c" +#line 6226 "util/configparser.c" /* yacc.c:1646 */ break; - case 578: -#line 3042 "./util/configparser.y" + case 580: +#line 3052 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6223 "util/configparser.c" +#line 6236 "util/configparser.c" /* yacc.c:1646 */ break; - case 579: -#line 3049 "./util/configparser.y" + case 581: +#line 3059 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6231,22 +6244,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6235 "util/configparser.c" +#line 6248 "util/configparser.c" /* yacc.c:1646 */ break; - case 580: -#line 3058 "./util/configparser.y" + case 582: +#line 3068 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6246 "util/configparser.c" +#line 6259 "util/configparser.c" /* yacc.c:1646 */ break; - case 581: -#line 3066 "./util/configparser.y" + case 583: +#line 3076 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6258,22 +6271,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6262 "util/configparser.c" +#line 6275 "util/configparser.c" /* yacc.c:1646 */ break; - case 582: -#line 3079 "./util/configparser.y" + case 584: +#line 3089 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" +#line 6286 "util/configparser.c" /* yacc.c:1646 */ break; - case 583: -#line 3087 "./util/configparser.y" + case 585: +#line 3097 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6285,19 +6298,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6289 "util/configparser.c" +#line 6302 "util/configparser.c" /* yacc.c:1646 */ break; - case 584: -#line 3100 "./util/configparser.y" + case 586: +#line 3110 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 6297 "util/configparser.c" +#line 6310 "util/configparser.c" /* yacc.c:1646 */ break; - case 593: -#line 3111 "./util/configparser.y" + case 595: +#line 3121 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6308,11 +6321,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6312 "util/configparser.c" +#line 6325 "util/configparser.c" /* yacc.c:1646 */ break; - case 594: -#line 3123 "./util/configparser.y" + case 596: +#line 3133 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6323,11 +6336,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6327 "util/configparser.c" +#line 6340 "util/configparser.c" /* yacc.c:1646 */ break; - case 595: -#line 3135 "./util/configparser.y" + case 597: +#line 3145 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6338,11 +6351,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6342 "util/configparser.c" +#line 6355 "util/configparser.c" /* yacc.c:1646 */ break; - case 596: -#line 3147 "./util/configparser.y" + case 598: +#line 3157 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6356,11 +6369,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6360 "util/configparser.c" +#line 6373 "util/configparser.c" /* yacc.c:1646 */ break; - case 597: -#line 3162 "./util/configparser.y" + case 599: +#line 3172 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6372,11 +6385,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6376 "util/configparser.c" +#line 6389 "util/configparser.c" /* yacc.c:1646 */ break; - case 598: -#line 3175 "./util/configparser.y" + case 600: +#line 3185 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6388,11 +6401,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6392 "util/configparser.c" +#line 6405 "util/configparser.c" /* yacc.c:1646 */ break; - case 599: -#line 3188 "./util/configparser.y" + case 601: +#line 3198 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6402,19 +6415,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6406 "util/configparser.c" +#line 6419 "util/configparser.c" /* yacc.c:1646 */ break; - case 600: -#line 3199 "./util/configparser.y" + case 602: +#line 3209 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(ipset:)\n")); } -#line 6414 "util/configparser.c" +#line 6427 "util/configparser.c" /* yacc.c:1646 */ break; - case 605: -#line 3208 "./util/configparser.y" + case 607: +#line 3218 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6428,11 +6441,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6432 "util/configparser.c" +#line 6445 "util/configparser.c" /* yacc.c:1646 */ break; - case 606: -#line 3223 "./util/configparser.y" + case 608: +#line 3233 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6446,12 +6459,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6450 "util/configparser.c" +#line 6463 "util/configparser.c" /* yacc.c:1646 */ break; -#line 6454 "util/configparser.c" - +#line 6467 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6476,13 +6488,14 @@ yyreduce: /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; @@ -6565,10 +6578,12 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -6630,7 +6645,6 @@ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -6638,7 +6652,6 @@ yyabortlab: yyresult = 1; goto yyreturn; - #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -6649,10 +6662,6 @@ yyexhaustedlab: /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -6682,7 +6691,7 @@ yyreturn: #endif return yyresult; } -#line 3237 "./util/configparser.y" +#line 3247 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 66662409e..1548199c6 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,9 +30,6 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -264,78 +260,79 @@ extern int yydebug; VAR_SERVE_EXPIRED_TTL_RESET = 470, VAR_SERVE_EXPIRED_REPLY_TTL = 471, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_SERVE_ORIGINAL_TTL = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -554,90 +551,92 @@ extern int yydebug; #define VAR_SERVE_EXPIRED_TTL_RESET 470 #define VAR_SERVE_EXPIRED_REPLY_TTL 471 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_SERVE_ORIGINAL_TTL 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 66 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:1909 */ char* str; -#line 639 "util/configparser.h" - +#line 638 "util/configparser.h" /* yacc.c:1909 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/util/configparser.y b/util/configparser.y index eb21abeed..9b300324c 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -147,7 +147,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW %token VAR_VIEW_FIRST VAR_SERVE_EXPIRED VAR_SERVE_EXPIRED_TTL %token VAR_SERVE_EXPIRED_TTL_RESET VAR_SERVE_EXPIRED_REPLY_TTL -%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_FAKE_DSA +%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_SERVE_ORIGINAL_TTL VAR_FAKE_DSA %token VAR_FAKE_SHA1 VAR_LOG_IDENTITY VAR_HIDE_TRUSTANCHOR %token VAR_TRUST_ANCHOR_SIGNALING VAR_AGGRESSIVE_NSEC VAR_USE_SYSTEMD %token VAR_SHM_ENABLE VAR_SHM_KEY VAR_ROOT_KEY_SENTINEL @@ -264,7 +264,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_qname_minimisation_strict | server_serve_expired | server_serve_expired_ttl | server_serve_expired_ttl_reset | server_serve_expired_reply_ttl | server_serve_expired_client_timeout | - server_fake_dsa | server_log_identity | server_use_systemd | + server_serve_original_ttl | server_fake_dsa | + server_log_identity | server_use_systemd | server_response_ip_tag | server_response_ip | server_response_ip_data | server_shm_enable | server_shm_key | server_fake_sha1 | server_hide_trustanchor | server_trust_anchor_signaling | @@ -1816,6 +1817,15 @@ server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG free($2); } ; +server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG + { + OUTYY(("P(server_serve_original_ttl:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_original_ttl = (strcmp($2, "yes")==0); + free($2); + } + ; server_fake_dsa: VAR_FAKE_DSA STRING_ARG { OUTYY(("P(server_fake_dsa:%s)\n", $2)); diff --git a/util/data/msgencode.c b/util/data/msgencode.c index be69f628a..bf5c9ab43 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -483,7 +483,9 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); else sldns_buffer_write_u32(pkt, - data->rr_ttl[j]-timenow); + data->rr_ttl[j]-(timenow == 0 ? 0 : + (SERVE_ORIGINAL_TTL ? + data->ttl_add : timenow))); if(c) { if((r=compress_rdata(pkt, data->rr_data[j], data->rr_len[j], region, tree, c)) @@ -521,7 +523,9 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); else sldns_buffer_write_u32(pkt, - data->rr_ttl[i]-timenow); + data->rr_ttl[i]-(timenow == 0 ? 0 : + (SERVE_ORIGINAL_TTL ? + data->ttl_add : timenow))); /* rrsig rdata cannot be compressed, perform 100+ byte * memcopy. */ sldns_buffer_write(pkt, data->rr_data[i], diff --git a/util/data/msgparse.h b/util/data/msgparse.h index fd04f9f6f..001cc4fe5 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -87,6 +87,8 @@ extern time_t SERVE_EXPIRED_TTL; extern time_t SERVE_EXPIRED_REPLY_TTL; /** Negative cache time (for entries without any RRs.) */ #define NORR_TTL 5 /* seconds */ +/** If we serve the original TTL or decrementing TTLs */ +extern int SERVE_ORIGINAL_TTL; /** * Data stored in scratch pad memory during parsing. diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 927bf09a2..5a6c1f853 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -67,6 +67,8 @@ int SERVE_EXPIRED = 0; time_t SERVE_EXPIRED_TTL = 0; /** TTL to use for expired records */ time_t SERVE_EXPIRED_REPLY_TTL = 30; +/** If we serve the original TTL or decrementing TTLs */ +int SERVE_ORIGINAL_TTL = 0; /** allocate qinfo, return 0 on error */ static int @@ -526,6 +528,7 @@ reply_info_set_ttls(struct reply_info* rep, time_t timenow) for(j=0; jcount + data->rrsig_count; j++) { data->rr_ttl[j] += timenow; } + data->ttl_add = timenow; } } diff --git a/util/data/packed_rrset.c b/util/data/packed_rrset.c index 4b0294f97..6147233ab 100644 --- a/util/data/packed_rrset.c +++ b/util/data/packed_rrset.c @@ -220,6 +220,7 @@ packed_rrset_ttl_add(struct packed_rrset_data* data, time_t add) { size_t i; size_t total = data->count + data->rrsig_count; + data->ttl_add = add; data->ttl += add; for(i=0; irr_ttl[i] += add; @@ -286,7 +287,7 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, else sldns_write_uint16(rr+rrset->rk.dname_len, LDNS_RR_TYPE_RRSIG); memmove(rr+rrset->rk.dname_len+2, &rrset->rk.rrset_class, 2); sldns_write_uint32(rr+rrset->rk.dname_len+4, - (uint32_t)(d->rr_ttl[i]-now)); + (uint32_t)(d->rr_ttl[i]-(SERVE_ORIGINAL_TTL ? d->ttl_add : now))); memmove(rr+rrset->rk.dname_len+8, d->rr_data[i], d->rr_len[i]); if(sldns_wire2str_rr_buf(rr, rlen, dest, dest_len) == -1) { log_info("rrbuf failure %d %s", (int)d->rr_len[i], dest); @@ -353,11 +354,12 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, for(i=0; icount + d->rrsig_count; i++) { if(d->rr_ttl[i] < now) d->rr_ttl[i] = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->rr_ttl[i] -= now; + else d->rr_ttl[i] -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; } if(d->ttl < now) d->ttl = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->ttl -= now; + else d->ttl -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; + d->ttl_add = 0; /* TTLs have been made relative */ return ck; } diff --git a/util/data/packed_rrset.h b/util/data/packed_rrset.h index 729877bab..ff95c0af0 100644 --- a/util/data/packed_rrset.h +++ b/util/data/packed_rrset.h @@ -233,6 +233,9 @@ enum sec_status { * the ttl value to send changes due to time. */ struct packed_rrset_data { + /** Timestamp added to TTLs in the packed data. + * Needed to support serving original TTLs. */ + time_t ttl_add; /** TTL (in seconds like time()) of the rrset. * Same for all RRs see rfc2181(5.2). */ time_t ttl; From ec6fde611c2ed016e22fa9435181c18e48495a7f Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 15 Jul 2020 15:36:06 +0000 Subject: [PATCH 04/45] Cleaned up adjustment in message encoding, fixes spurious negative TTLs --- util/data/msgencode.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/util/data/msgencode.c b/util/data/msgencode.c index bf5c9ab43..5de9379a1 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -454,6 +454,7 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, size_t i, j, owner_pos; int r, owner_labs; uint16_t owner_ptr = 0; + time_t adjust = 0; struct packed_rrset_data* data = (struct packed_rrset_data*) key->entry.data; @@ -464,9 +465,12 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, owner_labs = dname_count_labels(key->rk.dname); owner_pos = sldns_buffer_position(pkt); - /* For an rrset with a fixed TTL, use the rrset's TTL as given */ + /** Determine relative time adjustment for TTL values. + * For an rrset with a fixed TTL, use the rrset's TTL as given. */ if((key->rk.flags & PACKED_RRSET_FIXEDTTL) != 0) - timenow = 0; + adjust = 0; + else + adjust = SERVE_ORIGINAL_TTL ? data->ttl_add : timenow; if(do_data) { const sldns_rr_descriptor* c = type_rdata_compressable(key); @@ -479,13 +483,10 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, return r; sldns_buffer_write(pkt, &key->rk.type, 2); sldns_buffer_write(pkt, &key->rk.rrset_class, 2); - if(data->rr_ttl[j] < timenow) + if(data->rr_ttl[j] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, - data->rr_ttl[j]-(timenow == 0 ? 0 : - (SERVE_ORIGINAL_TTL ? - data->ttl_add : timenow))); + else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust); if(c) { if((r=compress_rdata(pkt, data->rr_data[j], data->rr_len[j], region, tree, c)) @@ -519,13 +520,10 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, } sldns_buffer_write_u16(pkt, LDNS_RR_TYPE_RRSIG); sldns_buffer_write(pkt, &key->rk.rrset_class, 2); - if(data->rr_ttl[i] < timenow) + if(data->rr_ttl[i] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, - data->rr_ttl[i]-(timenow == 0 ? 0 : - (SERVE_ORIGINAL_TTL ? - data->ttl_add : timenow))); + else sldns_buffer_write_u32(pkt, data->rr_ttl[i]-adjust); /* rrsig rdata cannot be compressed, perform 100+ byte * memcopy. */ sldns_buffer_write(pkt, data->rr_data[i], From 506dad946b7388786f11435ebcbd667388d1da9f Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 29 Jul 2020 15:26:42 +0000 Subject: [PATCH 05/45] Ensure packet_rrset_data is always initialised to zero upon allocation --- dns64/dns64.c | 2 +- respip/respip.c | 2 +- util/data/msgencode.c | 4 ++-- util/data/msgreply.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dns64/dns64.c b/dns64/dns64.c index 5c70119a5..39fd8778c 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -722,7 +722,7 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk, *dd_out = NULL; return; /* integer overflow protection in alloc */ } - if (!(dd = *dd_out = regional_alloc(region, + if (!(dd = *dd_out = regional_alloc_zero(region, sizeof(struct packed_rrset_data) + fd->count * (sizeof(size_t) + sizeof(time_t) + sizeof(uint8_t*) + 2 + 16)))) { diff --git a/respip/respip.c b/respip/respip.c index 6fa4f1885..dd0bed8be 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -523,7 +523,7 @@ copy_rrset(const struct ub_packed_rrset_key* key, struct regional* region) return NULL; /* guard against integer overflow */ dsize += data->rr_len[i]; } - d = regional_alloc(region, dsize); + d = regional_alloc_zero(region, dsize); if(!d) return NULL; *d = *data; diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 5de9379a1..6798b1799 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -486,7 +486,7 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, if(data->rr_ttl[j] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust); + else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust); if(c) { if((r=compress_rdata(pkt, data->rr_data[j], data->rr_len[j], region, tree, c)) @@ -523,7 +523,7 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, if(data->rr_ttl[i] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, data->rr_ttl[i]-adjust); + else sldns_buffer_write_u32(pkt, data->rr_ttl[i]-adjust); /* rrsig rdata cannot be compressed, perform 100+ byte * memcopy. */ sldns_buffer_write(pkt, data->rr_data[i], diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 5a6c1f853..6fce9a732 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -323,8 +323,8 @@ parse_create_rrset(sldns_buffer* pkt, struct rrset_parse* pset, (sizeof(size_t)+sizeof(uint8_t*)+sizeof(time_t)) + pset->size; if(region) - *data = regional_alloc(region, s); - else *data = malloc(s); + *data = regional_alloc_zero(region, s); + else *data = calloc(1, s); if(!*data) return 0; /* copy & decompress */ From 21f175b1acc8e8766060e71e84a0c1913fc38c23 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 29 Jul 2020 15:27:15 +0000 Subject: [PATCH 06/45] Adjust semantics of TTL adjustment after feedback from @wcawijngaards --- cachedb/cachedb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 6a2b735aa..e948a6b0d 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -465,7 +465,7 @@ packed_rrset_ttl_subtract(struct packed_rrset_data* data, time_t subtract) data->rr_ttl[i] -= subtract; else data->rr_ttl[i] = 0; } - data->ttl_add = 0; + data->ttl_add = (subtract < data->ttl_add) ? (data->ttl_add - subtract) : 0; } /* Adjust the TTL of a DNS message and its RRs by 'adjust'. If 'adjust' is From 027884aad26796d810299c1d3c32ba3814f0ff65 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 29 Jul 2020 15:52:58 +0000 Subject: [PATCH 07/45] Disable enforcing of min/max TTL when serving original TTL --- doc/unbound.conf.5.in | 11 ++++++----- util/data/msgreply.c | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 5e826bbf6..8c029411a 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1126,14 +1126,15 @@ behavior. Default is 0. .TP .B serve\-original\-ttl: \fI If enabled, unbound will always return the original TTL as received from -the upstream authoritative name server rather than the decrementing TTL as +the upstream name server rather than the decrementing TTL as stored in the cache. This feature may be useful if unbound serves as a front-end to a hidden authoritative name server. Enabling this feature does not impact cache expiry, it only changes the TTL unbound embeds in responses to -queries. Note that the returned TTL is still subject to the -configured maximum TTL as set using \fBcache\-max\-ttl\fR (defaults to -86400 seconds). If you wish to return higher original TTL values, you may -need to explicitly adjust the setting for \fBcache\-max\-ttl\fR. +queries. Note that enabling this feature implicitly disables enforcement of +the configured minimum and maximum TTL, as it is assumed users who enable this +feature do not want unbound to change the TTL obtained from an upstream server. +Thus, the values set using \fBcache\-min\-ttl\fR and \fBcache\-max\-ttl\fR are +ignored. Default is "no". .TP .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 6fce9a732..072a69b33 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -199,9 +199,9 @@ rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to, if(*rr_ttl > MAX_NEG_TTL) *rr_ttl = MAX_NEG_TTL; } - if(*rr_ttl < MIN_TTL) + if(!SERVE_ORIGINAL_TTL && (*rr_ttl < MIN_TTL)) *rr_ttl = MIN_TTL; - if(*rr_ttl > MAX_TTL) + if(!SERVE_ORIGINAL_TTL && (*rr_ttl > MAX_TTL)) *rr_ttl = MAX_TTL; if(*rr_ttl < data->ttl) data->ttl = *rr_ttl; From f44118408bb5a1bb4decd68d5faffa7e4487aac7 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Tue, 24 Nov 2020 19:23:08 -0500 Subject: [PATCH 08/45] Make ICANN Update CA and DS Trust Key static data --- smallapp/unbound-anchor.c | 61 ++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index a30523c76..9d0d46d9e 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -155,6 +155,36 @@ char* wsa_strerror(int err); #endif +static const char ICANN_UPDATE_CA[] = + /* The ICANN CA fetched at 24 Sep 2010. Valid to 2028 */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDdzCCAl+gAwIBAgIBATANBgkqhkiG9w0BAQsFADBdMQ4wDAYDVQQKEwVJQ0FO\n" + "TjEmMCQGA1UECxMdSUNBTk4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNV\n" + "BAMTDUlDQU5OIFJvb3QgQ0ExCzAJBgNVBAYTAlVTMB4XDTA5MTIyMzA0MTkxMloX\n" + "DTI5MTIxODA0MTkxMlowXTEOMAwGA1UEChMFSUNBTk4xJjAkBgNVBAsTHUlDQU5O\n" + "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1JQ0FOTiBSb290IENB\n" + "MQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKDb\n" + "cLhPNNqc1NB+u+oVvOnJESofYS9qub0/PXagmgr37pNublVThIzyLPGCJ8gPms9S\n" + "G1TaKNIsMI7d+5IgMy3WyPEOECGIcfqEIktdR1YWfJufXcMReZwU4v/AdKzdOdfg\n" + "ONiwc6r70duEr1IiqPbVm5T05l1e6D+HkAvHGnf1LtOPGs4CHQdpIUcy2kauAEy2\n" + "paKcOcHASvbTHK7TbbvHGPB+7faAztABLoneErruEcumetcNfPMIjXKdv1V1E3C7\n" + "MSJKy+jAqqQJqjZoQGB0necZgUMiUv7JK1IPQRM2CXJllcyJrm9WFxY0c1KjBO29\n" + "iIKK69fcglKcBuFShUECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B\n" + "Af8EBAMCAf4wHQYDVR0OBBYEFLpS6UmDJIZSL8eZzfyNa2kITcBQMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQAP8emCogqHny2UYFqywEuhLys7R9UKmYY4suzGO4nkbgfPFMfH\n" + "6M+Zj6owwxlwueZt1j/IaCayoKU3QsrYYoDRolpILh+FPwx7wseUEV8ZKpWsoDoD\n" + "2JFbLg2cfB8u/OlE4RYmcxxFSmXBg0yQ8/IoQt/bxOcEEhhiQ168H2yE5rxJMt9h\n" + "15nu5JBSewrCkYqYYmaxyOC3WrVGfHZxVI7MpIFcGdvSb2a1uyuua8l0BKgk3ujF\n" + "0/wsHNeP22qNyVO+XVBzrM8fk8BSUFuiT/6tZTYXRtEt5aKQZgXbKU5dUF3jT9qg\n" + "j/Br5BZw3X/zd325TvnswzMC1+ljLzHnQGGk\n" + "-----END CERTIFICATE-----\n"; + +static const char DS_TRUST_ANCHOR[] = + /* The anchors must start on a new line with ". IN DS and end with \n"[;] + * because the makedist script greps on the source here */ + /* anchor 20326 is from 2017 */ + ". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; + /** verbosity for this application */ static int verb = 0; @@ -213,41 +243,14 @@ usage(void) static const char* get_builtin_cert(void) { - return -/* The ICANN CA fetched at 24 Sep 2010. Valid to 2028 */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDdzCCAl+gAwIBAgIBATANBgkqhkiG9w0BAQsFADBdMQ4wDAYDVQQKEwVJQ0FO\n" -"TjEmMCQGA1UECxMdSUNBTk4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNV\n" -"BAMTDUlDQU5OIFJvb3QgQ0ExCzAJBgNVBAYTAlVTMB4XDTA5MTIyMzA0MTkxMloX\n" -"DTI5MTIxODA0MTkxMlowXTEOMAwGA1UEChMFSUNBTk4xJjAkBgNVBAsTHUlDQU5O\n" -"IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1JQ0FOTiBSb290IENB\n" -"MQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKDb\n" -"cLhPNNqc1NB+u+oVvOnJESofYS9qub0/PXagmgr37pNublVThIzyLPGCJ8gPms9S\n" -"G1TaKNIsMI7d+5IgMy3WyPEOECGIcfqEIktdR1YWfJufXcMReZwU4v/AdKzdOdfg\n" -"ONiwc6r70duEr1IiqPbVm5T05l1e6D+HkAvHGnf1LtOPGs4CHQdpIUcy2kauAEy2\n" -"paKcOcHASvbTHK7TbbvHGPB+7faAztABLoneErruEcumetcNfPMIjXKdv1V1E3C7\n" -"MSJKy+jAqqQJqjZoQGB0necZgUMiUv7JK1IPQRM2CXJllcyJrm9WFxY0c1KjBO29\n" -"iIKK69fcglKcBuFShUECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B\n" -"Af8EBAMCAf4wHQYDVR0OBBYEFLpS6UmDJIZSL8eZzfyNa2kITcBQMA0GCSqGSIb3\n" -"DQEBCwUAA4IBAQAP8emCogqHny2UYFqywEuhLys7R9UKmYY4suzGO4nkbgfPFMfH\n" -"6M+Zj6owwxlwueZt1j/IaCayoKU3QsrYYoDRolpILh+FPwx7wseUEV8ZKpWsoDoD\n" -"2JFbLg2cfB8u/OlE4RYmcxxFSmXBg0yQ8/IoQt/bxOcEEhhiQ168H2yE5rxJMt9h\n" -"15nu5JBSewrCkYqYYmaxyOC3WrVGfHZxVI7MpIFcGdvSb2a1uyuua8l0BKgk3ujF\n" -"0/wsHNeP22qNyVO+XVBzrM8fk8BSUFuiT/6tZTYXRtEt5aKQZgXbKU5dUF3jT9qg\n" -"j/Br5BZw3X/zd325TvnswzMC1+ljLzHnQGGk\n" -"-----END CERTIFICATE-----\n" - ; + return ICANN_UPDATE_CA; } /** return the built in root DS trust anchor */ static const char* get_builtin_ds(void) { - return -/* The anchors must start on a new line with ". IN DS and end with \n"[;] - * because the makedist script greps on the source here */ -/* anchor 20326 is from 2017 */ -". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; + return DS_TRUST_ANCHOR; } /** print hex data */ From 328e8d22948f1641994d3b14a269b8321b26f29c Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Tue, 24 Nov 2020 19:24:48 -0500 Subject: [PATCH 09/45] Use size_t in place of int for length --- smallapp/unbound-anchor.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index 9d0d46d9e..c4e9b3bfd 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -255,9 +255,9 @@ get_builtin_ds(void) /** print hex data */ static void -print_data(const char* msg, const char* data, int len) +print_data(const char* msg, const char* data, size_t len) { - int i; + size_t i; printf("%s: ", msg); for(i=0; i= 4) print_data("read data", data, (int)len); + if(verb >= 4) print_data("read data", data, len); m = BIO_new(BIO_s_mem()); if(!m) { if(verb) printf("out of memory\n"); From 9056613a79c08a26ae70463e748aa0988a85c8a9 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 19 Jan 2021 12:15:18 +0100 Subject: [PATCH 10/45] - Fix TTL of SOA record for negative answers (localzone data and authzone) to be the minimum of the SOA TTL and the SOA.MINIMUM. --- services/authzone.c | 11 ++- services/localzone.c | 57 ++++++++++-- services/localzone.h | 4 + testdata/auth_zonefile_down.rpl | 157 +++++++++++++++++++++++++++++++- testdata/localdata.rpl | 18 ++-- 5 files changed, 227 insertions(+), 20 deletions(-) diff --git a/services/authzone.c b/services/authzone.c index 3ad38865e..3d7f49388 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -2331,7 +2331,8 @@ static int az_add_negative_soa(struct auth_zone* z, struct regional* region, struct dns_msg* msg) { - uint32_t minimum; + time_t minimum; + size_t i; struct packed_rrset_data* d; struct auth_rrset* soa; struct auth_data* apex = az_find_name(z, z->name, z->namelen); @@ -2348,9 +2349,11 @@ az_add_negative_soa(struct auth_zone* z, struct regional* region, /* last 4 bytes are minimum ttl in network format */ if(d->count == 0) return 0; if(d->rr_len[0] < 2+4) return 0; - minimum = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-4)); - d->ttl = (time_t)minimum; - d->rr_ttl[0] = (time_t)minimum; + minimum = (time_t)sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-4)); + minimum = d->ttlttl:minimum; + d->ttl = minimum; + for(i=0; i < d->count + d->rrsig_count; i++) + d->rr_ttl[i] = minimum; msg->rep->ttl = get_rrset_ttl(msg->rep->rrsets[0]); msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL; diff --git a/services/localzone.c b/services/localzone.c index ed0d2c565..00067705e 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -463,6 +463,48 @@ lz_find_create_node(struct local_zone* z, uint8_t* nm, size_t nmlen, return 1; } +/* Mark the SOA record for the zone. This only marks the SOA rrset; the data + * for the RR is entered later on local_zone_enter_rr() as with the other + * records. An artifical soa_negative record with a modified TTL (minimum of + * the TTL and the SOA.MINIMUM) is also created and marked for usage with + * negative answers and to avoid allocations during those answers. */ +static int +lz_mark_soa_for_zone(struct local_zone* z, struct ub_packed_rrset_key* soa_rrset, + uint8_t* rdata, size_t rdata_len, time_t ttl, const char* rrstr) +{ + struct packed_rrset_data* pd = (struct packed_rrset_data*) + regional_alloc_zero(z->region, sizeof(*pd)); + struct ub_packed_rrset_key* rrset_negative = (struct ub_packed_rrset_key*) + regional_alloc_zero(z->region, sizeof(*rrset_negative)); + time_t minimum; + if(!rrset_negative||!pd) { + log_err("out of memory"); + return 0; + } + /* Mark the original SOA record and then continue with the negative one. */ + z->soa = soa_rrset; + rrset_negative->entry.key = rrset_negative; + pd->trust = rrset_trust_prim_noglue; + pd->security = sec_status_insecure; + rrset_negative->entry.data = pd; + rrset_negative->rk.dname = soa_rrset->rk.dname; + rrset_negative->rk.dname_len = soa_rrset->rk.dname_len; + rrset_negative->rk.type = soa_rrset->rk.type; + rrset_negative->rk.rrset_class = soa_rrset->rk.rrset_class; + if(!rrset_insert_rr(z->region, pd, rdata, rdata_len, ttl, rrstr)) + return 0; + /* last 4 bytes are minimum ttl in network format */ + if(pd->count == 0 || pd->rr_len[0] < 2+4) { + return 0; + } + minimum = (time_t)sldns_read_uint32(pd->rr_data[0]+(pd->rr_len[0]-4)); + pd->ttl = ttlrr_ttl[0] = pd->ttl; + + z->soa_negative = rrset_negative; + return 1; +} + int local_zone_enter_rr(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs, uint16_t rrtype, uint16_t rrclass, time_t ttl, @@ -502,8 +544,10 @@ local_zone_enter_rr(struct local_zone* z, uint8_t* nm, size_t nmlen, if(query_dname_compare(node->name, z->name) == 0) { if(rrtype == LDNS_RR_TYPE_NSEC) rrset->rrset->rk.flags = PACKED_RRSET_NSEC_AT_APEX; - if(rrtype == LDNS_RR_TYPE_SOA) - z->soa = rrset->rrset; + if(rrtype == LDNS_RR_TYPE_SOA && + !lz_mark_soa_for_zone(z, rrset->rrset, rdata, rdata_len, ttl, + rrstr)) + return 0; } } pd = (struct packed_rrset_data*)rrset->rrset->entry.data; @@ -1548,9 +1592,9 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, lz_type == local_zone_inform_redirect || lz_type == local_zone_always_nodata)? LDNS_RCODE_NOERROR:LDNS_RCODE_NXDOMAIN; - if(z->soa) + if(z->soa && z->soa_negative) return local_encode(qinfo, env, edns, repinfo, buf, temp, - z->soa, 0, rcode); + z->soa_negative, 0, rcode); local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode, (rcode|BIT_AA)); return 1; @@ -1605,9 +1649,9 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, * does not, then we should make this noerror/nodata */ if(ld && ld->rrsets) { int rcode = LDNS_RCODE_NOERROR; - if(z->soa) + if(z->soa && z->soa_negative) return local_encode(qinfo, env, edns, repinfo, buf, temp, - z->soa, 0, rcode); + z->soa_negative, 0, rcode); local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode, (rcode|BIT_AA)); return 1; @@ -2045,6 +2089,7 @@ void local_zones_del_data(struct local_zones* zones, /* did we delete the soa record ? */ if(query_dname_compare(d->name, z->name) == 0) z->soa = NULL; + z->soa_negative = NULL; /* cleanup the empty nonterminals for this name */ del_empty_term(z, d, name, len, labs); diff --git a/services/localzone.h b/services/localzone.h index 492629936..3da5c8754 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -158,6 +158,10 @@ struct local_zone { rbtree_type data; /** if data contains zone apex SOA data, this is a ptr to it. */ struct ub_packed_rrset_key* soa; + /** if data contains zone apex SOA data, this is a prt to an + * artificial negative SOA rrset (TTL is the minimum of the TTL and the + * SOA.MINIMUM). */ + struct ub_packed_rrset_key* soa_negative; }; /** diff --git a/testdata/auth_zonefile_down.rpl b/testdata/auth_zonefile_down.rpl index 09e7fd061..2b17c8433 100644 --- a/testdata/auth_zonefile_down.rpl +++ b/testdata/auth_zonefile_down.rpl @@ -1,6 +1,12 @@ ; config options server: target-fetch-policy: "0 0 0 0 0" + ; Options for singed zone. The zone is partially copied from val_negcache_nxdomain.rpl + trust-anchor: "testzone.nlnetlabs.nl. IN DS 2926 8 2 6f8512d1e82eecbd684fc4a76f39f8c5b411af385494873bdead663ddb78a88b" + val-override-date: "20180213111425" + qname-minimisation: "no" + trust-anchor-signaling: no + aggressive-nsec: yes auth-zone: name: "example.com." @@ -41,6 +47,50 @@ ns1 3600 IN A 1.2.3.4 ns2 3600 IN AAAA ::2 TEMPFILE_END +auth-zone: + name: "soa.high.com." + for-downstream: yes + for-upstream: no + zonefile: +TEMPFILE_NAME soa.high.com +TEMPFILE_CONTENTS soa.high.com +$ORIGIN high.com. +soa 500 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 200 ) + 3600 IN NS ns1.example.com. + 3600 IN NS ns2.example.com. +TEMPFILE_END + +auth-zone: + name: "soa.low.com." + for-downstream: yes + for-upstream: no + zonefile: +TEMPFILE_NAME soa.low.com +TEMPFILE_CONTENTS soa.low.com +$ORIGIN low.com. +soa 200 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 500 ) + 3600 IN NS ns1.example.com. + 3600 IN NS ns2.example.com. +TEMPFILE_END + +auth-zone: + name: "testzone.nlnetlabs.nl." + for-downstream: yes + for-upstream: no + zonefile: +TEMPFILE_NAME testzone.nlnetlabs.nl +TEMPFILE_CONTENTS testzone.nlnetlabs.nl +$ORIGIN testzone.nlnetlabs.nl. +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 4600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 4600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +TEMPFILE_END + stub-zone: name: "." stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. @@ -50,7 +100,7 @@ SCENARIO_BEGIN Test authority zone with zonefile for downstream responses ; K.ROOT-SERVERS.NET. RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 + ADDRESS 193.0.14.129 ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id @@ -182,4 +232,109 @@ SECTION ANSWER www.example.com. IN A 1.2.3.4 ENTRY_END +; check SOA TTL to be the minimum of the SOA.minimum and the SOA TTL +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nonexistent.soa.high.com. IN A +ENTRY_END +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NXDOMAIN +SECTION QUESTION +nonexistent.soa.high.com IN A +SECTION AUTHORITY +soa.high.com. 200 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 200 +ENTRY_END +; check that the original SOA is also returned +STEP 32 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +soa.high.com. IN SOA +ENTRY_END +STEP 33 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NOERROR +SECTION QUESTION +soa.high.com. IN SOA +SECTION ANSWER +soa.high.com. 500 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 200 +ENTRY_END + +; check SOA TTL to be the minimum of the SOA.minimum and the SOA TTL +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nonexistent.soa.low.com. IN A +ENTRY_END +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NXDOMAIN +SECTION QUESTION +nonexistent.soa.low.com. IN A +SECTION AUTHORITY +soa.low.com. 200 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 500 +ENTRY_END +; check that the original SOA is also returned +STEP 42 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +soa.low.com. IN SOA +ENTRY_END +STEP 43 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NOERROR +SECTION QUESTION +soa.low.com. IN SOA +SECTION ANSWER +soa.low.com. 200 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 500 +ENTRY_END + +; check SOA TTL to be minimum of the SOA.minimum and the SOA TTL for DNSSEC +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN A +ENTRY_END +STEP 51 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD DO RA AA NXDOMAIN +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN A +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +ENTRY_END +; check that the original SOA is also returned +STEP 52 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +testzone.nlnetlabs.nl. IN SOA +ENTRY_END +STEP 53 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD DO RA AA NOERROR +SECTION QUESTION +testzone.nlnetlabs.nl. IN SOA +SECTION ANSWER +testzone.nlnetlabs.nl. 4600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 4600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +ENTRY_END + SCENARIO_END diff --git a/testdata/localdata.rpl b/testdata/localdata.rpl index eb25ef573..047fbeeba 100644 --- a/testdata/localdata.rpl +++ b/testdata/localdata.rpl @@ -88,12 +88,12 @@ local. IN A ENTRY_END STEP 6 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION local. IN A SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; positive SOA @@ -104,7 +104,7 @@ local. IN SOA ENTRY_END STEP 8 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION local. IN SOA @@ -136,12 +136,12 @@ serv.local. IN MX ENTRY_END STEP 12 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION serv.local. IN MX SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; no such type, empty nonterminal @@ -152,12 +152,12 @@ bla.local. IN MX ENTRY_END STEP 14 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION bla.local. IN MX SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; nxdomain with SOA @@ -168,12 +168,12 @@ doing.local. IN MX ENTRY_END STEP 16 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA NXDOMAIN SECTION QUESTION doing.local. IN MX SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; nxdomain without SOA From 68d92b7bbbf1ffc5ff1300ec7f4f5361294155ab Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Tue, 19 Jan 2021 17:12:14 +0100 Subject: [PATCH 11/45] Prevent a few more yacc clashes. --- util/configyyrename.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/util/configyyrename.h b/util/configyyrename.h index f529be577..8c7ff5b5c 100644 --- a/util/configyyrename.h +++ b/util/configyyrename.h @@ -84,5 +84,11 @@ #define yyget_leng ub_c_get_leng #define yylineno ub_c_lineno #define yyget_text ub_c_get_text +#define yyss ub_c_ss +#define yysslim ub_c_sslim +#define yyssp ub_c_ssp +#define yystacksize ub_c_stacksize +#define yyvs ub_c_vs +#define yyvsp ub_c_vsp #endif /* UTIL_CONFIGYYRENAME_H */ From 38e12229b8e6cd5c6b45c61851574492af5a2fa6 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 19 Jan 2021 20:09:34 +0100 Subject: [PATCH 12/45] - Feedback for PR #407. --- services/localzone.c | 8 ++++---- testdata/auth_zonefile_down.rpl | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/localzone.c b/services/localzone.c index 00067705e..4369e23c1 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -494,12 +494,12 @@ lz_mark_soa_for_zone(struct local_zone* z, struct ub_packed_rrset_key* soa_rrset if(!rrset_insert_rr(z->region, pd, rdata, rdata_len, ttl, rrstr)) return 0; /* last 4 bytes are minimum ttl in network format */ - if(pd->count == 0 || pd->rr_len[0] < 2+4) { + if(pd->count == 0 || pd->rr_len[0] < 2+4) return 0; - } minimum = (time_t)sldns_read_uint32(pd->rr_data[0]+(pd->rr_len[0]-4)); - pd->ttl = ttlrr_ttl[0] = pd->ttl; + minimum = ttlttl = minimum; + pd->rr_ttl[0] = minimum; z->soa_negative = rrset_negative; return 1; diff --git a/testdata/auth_zonefile_down.rpl b/testdata/auth_zonefile_down.rpl index 2b17c8433..9c5ecbb1c 100644 --- a/testdata/auth_zonefile_down.rpl +++ b/testdata/auth_zonefile_down.rpl @@ -1,7 +1,7 @@ ; config options server: target-fetch-policy: "0 0 0 0 0" - ; Options for singed zone. The zone is partially copied from val_negcache_nxdomain.rpl + ; Options for signed zone. The zone is partially copied from val_negcache_nxdomain.rpl trust-anchor: "testzone.nlnetlabs.nl. IN DS 2926 8 2 6f8512d1e82eecbd684fc4a76f39f8c5b411af385494873bdead663ddb78a88b" val-override-date: "20180213111425" qname-minimisation: "no" From dc23502abb07eba7e0819ee24f0e2bf51a2516f5 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 22 Jan 2021 12:33:56 +0100 Subject: [PATCH 13/45] - Updated Changelog for PR #407. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f50f294af..2b093005b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 January 2021: George + - Fix TTL of SOA record for negative answers (localzone and + authzone data) to be the minimum of the SOA TTL and the SOA.MINIMUM. + 18 January 2021: Wouter - Fix #404: DNS query with small edns bufsize fail. - Fix declaration before statement and signed comparison warning in From 3a6f1ecafae3e34444089f2d81f4de49d9e94f3c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 22 Jan 2021 13:11:41 +0100 Subject: [PATCH 14/45] Fixup if brackets. --- services/localzone.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/localzone.c b/services/localzone.c index 4369e23c1..fd2ff2bb6 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -2087,9 +2087,10 @@ void local_zones_del_data(struct local_zones* zones, /* no memory recycling for zone deletions ... */ d->rrsets = NULL; /* did we delete the soa record ? */ - if(query_dname_compare(d->name, z->name) == 0) + if(query_dname_compare(d->name, z->name) == 0) { z->soa = NULL; z->soa_negative = NULL; + } /* cleanup the empty nonterminals for this name */ del_empty_term(z, d, name, len, labs); From 2a3548e1efbdfcc6d5e04d8633c13b1b5ea63e0a Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Fri, 22 Jan 2021 15:10:57 +0100 Subject: [PATCH 15/45] Move NSID Changelog entry to day of merge --- doc/Changelog | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index d7b4c21ee..5cb33ef2e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,10 @@ - Fix TTL of SOA record for negative answers (localzone and authzone data) to be the minimum of the SOA TTL and the SOA.MINIMUM. +19 January 2021: Willem + - Support for RFC5001: DNS Name Server Identifier (NSID) Option + with the nsid: option in unbound.conf + 18 January 2021: Wouter - Fix #404: DNS query with small edns bufsize fail. - Fix declaration before statement and signed comparison warning in @@ -79,10 +83,6 @@ - Fix for #283: fix stream reuse and tcp fast open. - Fix update, with write event check with streamreuse and fastopen. -2 December 2020: Willem - - Support for RFC5001: DNS Name Server Identifier (NSID) Option - with the nsid: option in unbound.conf - 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low verbosity. From fc49d145b51faefe45db538a9a57c8e1524babc6 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Fri, 22 Jan 2021 15:14:10 +0100 Subject: [PATCH 16/45] Changelog entry for padding option --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 5cb33ef2e..f77355945 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 January 2022: Willem + - Padding of queries and responses with DNS over TLS as specified in + RFC7830 and RFC8467. + 22 January 2021: George - Fix TTL of SOA record for negative answers (localzone and authzone data) to be the minimum of the SOA TTL and the SOA.MINIMUM. From d253db04fddb915bdd98de1683bb9c5bfd8f862b Mon Sep 17 00:00:00 2001 From: Roland van Rijswijk-Deij Date: Fri, 22 Jan 2021 18:56:09 +0000 Subject: [PATCH 17/45] Addressed review comment from @wcawijngaards --- util/data/packed_rrset.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/util/data/packed_rrset.c b/util/data/packed_rrset.c index 6147233ab..e1a0833a2 100644 --- a/util/data/packed_rrset.c +++ b/util/data/packed_rrset.c @@ -276,6 +276,7 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, entry.data; uint8_t rr[65535]; size_t rlen = rrset->rk.dname_len + 2 + 2 + 4 + d->rr_len[i]; + time_t adjust = 0; log_assert(dest_len > 0 && dest); if(rlen > dest_len) { dest[0] = 0; @@ -286,8 +287,10 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, memmove(rr+rrset->rk.dname_len, &rrset->rk.type, 2); else sldns_write_uint16(rr+rrset->rk.dname_len, LDNS_RR_TYPE_RRSIG); memmove(rr+rrset->rk.dname_len+2, &rrset->rk.rrset_class, 2); + adjust = SERVE_ORIGINAL_TTL ? d->ttl_add : now; + if (d->rr_ttl[i] < adjust) adjust = d->rr_ttl[i]; /* Prevent negative TTL overflow */ sldns_write_uint32(rr+rrset->rk.dname_len+4, - (uint32_t)(d->rr_ttl[i]-(SERVE_ORIGINAL_TTL ? d->ttl_add : now))); + (uint32_t)(d->rr_ttl[i]-adjust)); memmove(rr+rrset->rk.dname_len+8, d->rr_data[i], d->rr_len[i]); if(sldns_wire2str_rr_buf(rr, rlen, dest, dest_len) == -1) { log_info("rrbuf failure %d %s", (int)d->rr_len[i], dest); @@ -333,6 +336,7 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, struct packed_rrset_data* data = (struct packed_rrset_data*) key->entry.data; size_t dsize, i; + time_t adjust = 0; if(!ck) return NULL; ck->id = key->id; @@ -351,14 +355,15 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, ck->entry.data = d; packed_rrset_ptr_fixup(d); /* make TTLs relative - once per rrset */ + adjust = SERVE_ORIGINAL_TTL ? data->ttl_add : now; for(i=0; icount + d->rrsig_count; i++) { - if(d->rr_ttl[i] < now) + if(d->rr_ttl[i] < adjust) d->rr_ttl[i] = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->rr_ttl[i] -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; + else d->rr_ttl[i] -= adjust; } - if(d->ttl < now) + if(d->ttl < adjust) d->ttl = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->ttl -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; + else d->ttl -= adjust; d->ttl_add = 0; /* TTLs have been made relative */ return ck; } From 54b84381f43937f26e3826f2c4024ae83645599b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Sun, 24 Jan 2021 18:12:08 +0100 Subject: [PATCH 18/45] tdir test for padding option --- testdata/padding.tdir/padding.conf | 18 ++++ testdata/padding.tdir/padding.conf2 | 36 +++++++ testdata/padding.tdir/padding.dsc | 16 ++++ testdata/padding.tdir/padding.msgsizes | 4 + testdata/padding.tdir/padding.post | 23 +++++ testdata/padding.tdir/padding.pre | 65 +++++++++++++ testdata/padding.tdir/padding.test | 109 ++++++++++++++++++++++ testdata/padding.tdir/padding.testns | 33 +++++++ testdata/padding.tdir/unbound_control.key | 39 ++++++++ testdata/padding.tdir/unbound_control.pem | 22 +++++ testdata/padding.tdir/unbound_server.key | 39 ++++++++ testdata/padding.tdir/unbound_server.pem | 22 +++++ 12 files changed, 426 insertions(+) create mode 100644 testdata/padding.tdir/padding.conf create mode 100644 testdata/padding.tdir/padding.conf2 create mode 100644 testdata/padding.tdir/padding.dsc create mode 100644 testdata/padding.tdir/padding.msgsizes create mode 100644 testdata/padding.tdir/padding.post create mode 100644 testdata/padding.tdir/padding.pre create mode 100644 testdata/padding.tdir/padding.test create mode 100644 testdata/padding.tdir/padding.testns create mode 100644 testdata/padding.tdir/unbound_control.key create mode 100644 testdata/padding.tdir/unbound_control.pem create mode 100644 testdata/padding.tdir/unbound_server.key create mode 100644 testdata/padding.tdir/unbound_server.pem diff --git a/testdata/padding.tdir/padding.conf b/testdata/padding.tdir/padding.conf new file mode 100644 index 000000000..8ae6428cc --- /dev/null +++ b/testdata/padding.tdir/padding.conf @@ -0,0 +1,18 @@ +server: + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + tls-cert-bundle: "unbound_server.pem" + tls-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@#unbound" + + diff --git a/testdata/padding.tdir/padding.conf2 b/testdata/padding.tdir/padding.conf2 new file mode 100644 index 000000000..193209233 --- /dev/null +++ b/testdata/padding.tdir/padding.conf2 @@ -0,0 +1,36 @@ +# this is the upstream server that has pipelining and responds to queries. +server: + verbosity: 1 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound2.pid" + chroot: "" + username: "" + do-not-query-localhost: no + tls-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + tcp-idle-timeout: 10000 + log-queries: yes + log-replies: yes + log-identity: "upstream" + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" +dnstap: + dnstap-enable: yes + dnstap-socket-path: "dnstap.socket" + dnstap-send-identity: yes + dnstap-send-version: yes + #dnstap-identity + #dnstap-version + dnstap-log-resolver-query-messages: no + dnstap-log-resolver-response-messages: no + dnstap-log-client-query-messages: yes + dnstap-log-client-response-messages: yes + dnstap-log-forwarder-query-messages: no + dnstap-log-forwarder-response-messages: no diff --git a/testdata/padding.tdir/padding.dsc b/testdata/padding.tdir/padding.dsc new file mode 100644 index 000000000..37aceb353 --- /dev/null +++ b/testdata/padding.tdir/padding.dsc @@ -0,0 +1,16 @@ +BaseName: padding +Version: 1.0 +Description: Test EDNS0 padding option (RFC7830 and RFC8467). +CreationDate: Sun Jan 24 16:41:42 CET 2021 +Maintainer: Willem Toorop +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: padding.pre +Post: padding.post +Test: padding.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/padding.tdir/padding.msgsizes b/testdata/padding.tdir/padding.msgsizes new file mode 100644 index 000000000..c43d05a96 --- /dev/null +++ b/testdata/padding.tdir/padding.msgsizes @@ -0,0 +1,4 @@ +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 468 +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 936 diff --git a/testdata/padding.tdir/padding.post b/testdata/padding.tdir/padding.post new file mode 100644 index 000000000..826798a8f --- /dev/null +++ b/testdata/padding.tdir/padding.post @@ -0,0 +1,23 @@ +# #-- padding.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +PRE="../.." +if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +kill_pid $DNSTAP_SOCKET_PID +kill_pid $FWD_PID +kill_pid `cat unbound2.pid` +if test -f unbound2.log; then + echo ">>> upstream log" + cat unbound2.log +fi +#kill_pid $UNBOUND_PID +kill_pid `cat unbound.pid` +if test -f unbound.log; then + echo ">>> unbound log" + cat unbound.log +fi diff --git a/testdata/padding.tdir/padding.pre b/testdata/padding.tdir/padding.pre new file mode 100644 index 000000000..6022cf4e4 --- /dev/null +++ b/testdata/padding.tdir/padding.pre @@ -0,0 +1,65 @@ +# #-- padding.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +get_random_port 3 +UNBOUND_PORT=$RND_PORT +UPSTREAM_PORT=$(($RND_PORT + 1)) +FWD_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start ldns-testnd +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT padding.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start the dnstap log server +# the -vvvv flag prints protocol and connection information from the +# unbound-dnstap-socket server. +# the -l flag prints the DNS info in the DNSTAP packet in multiline output. +# stderr is the '-vvvv' server logs and errors. +# stdout is the one-line packet logs (or with -l, multiline). +$PRE/unbound-dnstap-socket -u dnstap.socket -l -vvvv 2>tap.errlog >tap.log & +if test $? -ne 0; then + echo "could not start unbound-dnstap-socket server" + exit 1 +fi +DNSTAP_SOCKET_PID=$! +echo "DNSTAP_SOCKET_PID=$DNSTAP_SOCKET_PID" >> .tpkg.var.test +# wait for the server to go up and make the dnstap.socket file +wait_server_up "tap.errlog" "creating unix socket" +if test ! -S dnstap.socket; then + echo "the dnstap.socket file does not exist!" +fi + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < padding.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +#$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +# make upstream config file +sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < padding.conf2 > ub2.conf +# start upstream unbound in the background +$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & +#$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & +UPSTREAM_PID=$! +echo "UPSTREAM_PID=$UPSTREAM_PID" >> .tpkg.var.test + +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log +wait_unbound_up unbound2.log + +cat .tpkg.var.test + diff --git a/testdata/padding.tdir/padding.test b/testdata/padding.tdir/padding.test new file mode 100644 index 000000000..53874b585 --- /dev/null +++ b/testdata/padding.tdir/padding.test @@ -0,0 +1,109 @@ +echo There we go... + +# #-- padding.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +echo "> query www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> wait for log to happen on timer" +sleep 3 +echo "> check tap.log for dnstap info" +# see if it logged the information in tap.log +# wait for a moment for filesystem to catch up. +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 10; fi +if grep "www.example.com" tap.log; then echo "yes it is in tap.log"; +else + echo "information not in tap.log" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> query txt.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> check answer" +if grep "Lorem ipsum" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> wait for log to happen on timer" +sleep 3 +echo "> check tap.log for dnstap info" +# see if it logged the information in tap.log +# wait for a moment for filesystem to catch up. +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 10; fi +if grep "txt.example.com" tap.log; then echo "yes it is in tap.log"; +else + echo "information not in tap.log" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> wait for message to be fully written to log" +sleep 1 +grep '^;; MSG SIZE rcvd: ' tap.log > message.sizes +if diff message.sizes padding.msgsizes +then + echo "OK" + exit 0 +else + echo "unexpected message sizes" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi diff --git a/testdata/padding.tdir/padding.testns b/testdata/padding.tdir/padding.testns new file mode 100644 index 000000000..714c35912 --- /dev/null +++ b/testdata/padding.tdir/padding.testns @@ -0,0 +1,33 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +txt IN TXT +SECTION ANSWER +txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing " +txt IN TXT "elit, sed do eiusmod tempor incididunt ut labore et " +txt IN TXT "dolore magna aliqua. Ut enim ad minim veniam, quis " +txt IN TXT "nostrud exercitation ullamco laboris nisi ut aliquip " +txt IN TXT "ex ea commodo consequat. Duis aute irure dolor in " +txt IN TXT "reprehenderit in voluptate velit esse cillum dolore " +txt IN TXT "eu fugiat nulla pariatur. Excepteur sint occaecat " +txt IN TXT "cupidatat non proident, sunt in culpa qui officia " +txt IN TXT "deserunt mollit anim id est laborum." +ENTRY_END + + diff --git a/testdata/padding.tdir/unbound_control.key b/testdata/padding.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/padding.tdir/unbound_control.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= +-----END RSA PRIVATE KEY----- diff --git a/testdata/padding.tdir/unbound_control.pem b/testdata/padding.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/padding.tdir/unbound_control.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte +-----END CERTIFICATE----- diff --git a/testdata/padding.tdir/unbound_server.key b/testdata/padding.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/padding.tdir/unbound_server.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== +-----END RSA PRIVATE KEY----- diff --git a/testdata/padding.tdir/unbound_server.pem b/testdata/padding.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/padding.tdir/unbound_server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== +-----END CERTIFICATE----- From efc8022ca4d5de01017915c87d375c82362e450a Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Sun, 24 Jan 2021 18:29:00 +0100 Subject: [PATCH 19/45] padding.tdir text in single TXT RR So the sentences are not re-ordered and the text makes sense! --- testdata/padding.tdir/padding.testns | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/testdata/padding.tdir/padding.testns b/testdata/padding.tdir/padding.testns index 714c35912..599323646 100644 --- a/testdata/padding.tdir/padding.testns +++ b/testdata/padding.tdir/padding.testns @@ -19,15 +19,7 @@ ADJUST copy_id SECTION QUESTION txt IN TXT SECTION ANSWER -txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing " -txt IN TXT "elit, sed do eiusmod tempor incididunt ut labore et " -txt IN TXT "dolore magna aliqua. Ut enim ad minim veniam, quis " -txt IN TXT "nostrud exercitation ullamco laboris nisi ut aliquip " -txt IN TXT "ex ea commodo consequat. Duis aute irure dolor in " -txt IN TXT "reprehenderit in voluptate velit esse cillum dolore " -txt IN TXT "eu fugiat nulla pariatur. Excepteur sint occaecat " -txt IN TXT "cupidatat non proident, sunt in culpa qui officia " -txt IN TXT "deserunt mollit anim id est laborum." +txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ENTRY_END From 4694323b1cfe38bc4cc53e65d1d0899ed11e1a2b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Sun, 24 Jan 2021 20:17:44 +0100 Subject: [PATCH 20/45] Test some different padding sizes --- testdata/padding.tdir/padding.conf | 9 ++++ testdata/padding.tdir/padding.conf2 | 11 ++++ testdata/padding.tdir/padding.msgsizes | 16 ++++++ testdata/padding.tdir/padding.pre | 10 ++-- testdata/padding.tdir/padding.test | 75 +++++++++++++++++++++++--- testdata/padding.tdir/padding.testns | 9 ++++ 6 files changed, 120 insertions(+), 10 deletions(-) diff --git a/testdata/padding.tdir/padding.conf b/testdata/padding.tdir/padding.conf index 8ae6428cc..c310d355d 100644 --- a/testdata/padding.tdir/padding.conf +++ b/testdata/padding.tdir/padding.conf @@ -11,6 +11,15 @@ server: tls-cert-bundle: "unbound_server.pem" tls-upstream: yes +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" + forward-zone: name: "." forward-addr: "127.0.0.1@@TOPORT@#unbound" diff --git a/testdata/padding.tdir/padding.conf2 b/testdata/padding.tdir/padding.conf2 index 193209233..98be8fec7 100644 --- a/testdata/padding.tdir/padding.conf2 +++ b/testdata/padding.tdir/padding.conf2 @@ -18,9 +18,20 @@ server: log-replies: yes log-identity: "upstream" +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT2@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" + forward-zone: name: "." forward-addr: "127.0.0.1@@TOPORT@" + dnstap: dnstap-enable: yes dnstap-socket-path: "dnstap.socket" diff --git a/testdata/padding.tdir/padding.msgsizes b/testdata/padding.tdir/padding.msgsizes index c43d05a96..f0d4a496d 100644 --- a/testdata/padding.tdir/padding.msgsizes +++ b/testdata/padding.tdir/padding.msgsizes @@ -2,3 +2,19 @@ ;; MSG SIZE rcvd: 468 ;; MSG SIZE rcvd: 128 ;; MSG SIZE rcvd: 936 +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 60 +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 502 +;; MSG SIZE rcvd: 44 +;; MSG SIZE rcvd: 60 +;; MSG SIZE rcvd: 44 +;; MSG SIZE rcvd: 502 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 64 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 512 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 512 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 512 diff --git a/testdata/padding.tdir/padding.pre b/testdata/padding.tdir/padding.pre index 6022cf4e4..4a13d0229 100644 --- a/testdata/padding.tdir/padding.pre +++ b/testdata/padding.tdir/padding.pre @@ -8,13 +8,17 @@ PRE="../.." . ../common.sh if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi -get_random_port 3 +get_random_port 5 UNBOUND_PORT=$RND_PORT UPSTREAM_PORT=$(($RND_PORT + 1)) FWD_PORT=$(($RND_PORT + 2)) +CONTROL_PORT=$(($RND_PORT + 3)) +CONTROL_PORT2=$(($RND_PORT + 4)) echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test +echo "CONTROL_PORT2=$CONTROL_PORT2" >> .tpkg.var.test # start ldns-testnd get_ldns_testns @@ -42,7 +46,7 @@ if test ! -S dnstap.socket; then fi # make config file -sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < padding.conf > ub.conf +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < padding.conf > ub.conf # start unbound in the background $PRE/unbound -d -c ub.conf >unbound.log 2>&1 & #$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & @@ -50,7 +54,7 @@ UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test # make upstream config file -sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < padding.conf2 > ub2.conf +sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT2\@/'$CONTROL_PORT2'/' < padding.conf2 > ub2.conf # start upstream unbound in the background $PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & #$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & diff --git a/testdata/padding.tdir/padding.test b/testdata/padding.tdir/padding.test index 53874b585..5111d8139 100644 --- a/testdata/padding.tdir/padding.test +++ b/testdata/padding.tdir/padding.test @@ -10,7 +10,7 @@ PRE="../.." . ../common.sh if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi -echo "> query www.example.com." +echo "> query www.example.com. A" dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile echo "> check answer" if grep "10.20.30.40" outfile; then @@ -50,7 +50,7 @@ else exit 1 fi -echo "> query txt.example.com." +echo "> query txt.example.com. TXT" dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile echo "> check answer" if grep "Lorem ipsum" outfile; then @@ -65,8 +65,6 @@ else echo "Not OK" exit 1 fi -echo "> wait for log to happen on timer" -sleep 3 echo "> check tap.log for dnstap info" # see if it logged the information in tap.log # wait for a moment for filesystem to catch up. @@ -89,12 +87,75 @@ else exit 1 fi -echo "> wait for message to be fully written to log" -sleep 1 +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> disable padding of responses." +$PRE/unbound-control -c ub2.conf set_option pad-responses: no +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query txt.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> enable padding of responses." +$PRE/unbound-control -c ub2.conf set_option pad-responses: yes +echo "> set pad responses block size to 64" +$PRE/unbound-control -c ub2.conf set_option pad-responses-block-size: 64 +echo "> disable padding of queries." +$PRE/unbound-control -c ub.conf set_option pad-queries: no +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query txt.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> enable padding of queries." +$PRE/unbound-control -c ub.conf set_option pad-queries: yes +echo "> set pad queries block size to 48" +$PRE/unbound-control -c ub.conf set_option pad-queries-block-size: 48 +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query txt.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> set pad responses block size to 512" +$PRE/unbound-control -c ub2.conf set_option pad-responses-block-size: 512 +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query fin.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT fin.example.com. TXT | tee outfile +echo "> check tap.log for dnstap info" +# see if it logged the information in tap.log +# wait for a moment for filesystem to catch up. +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 10; fi +if grep "fini" tap.log; then echo "yes it is in tap.log"; +else + echo "information not in tap.log" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + grep '^;; MSG SIZE rcvd: ' tap.log > message.sizes + if diff message.sizes padding.msgsizes then - echo "OK" + echo "OK - Message sizes matched expected sizes" exit 0 else echo "unexpected message sizes" diff --git a/testdata/padding.tdir/padding.testns b/testdata/padding.tdir/padding.testns index 599323646..bd3718ff6 100644 --- a/testdata/padding.tdir/padding.testns +++ b/testdata/padding.tdir/padding.testns @@ -22,4 +22,13 @@ SECTION ANSWER txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +fin IN TXT +SECTION ANSWER +fin IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." "fini" +ENTRY_END From ca2139bf3d4e10aa7fb8b810c08ca861194f72f6 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Mon, 25 Jan 2021 15:13:54 +0100 Subject: [PATCH 21/45] Some review nits from George --- services/outside_network.c | 2 +- util/config_file.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 7527a6321..11559ffac 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -3039,7 +3039,7 @@ outnet_serviced_query(struct outside_network* outnet, addrlen, zone, zonelen, (int)qinfo->qtype, qstate->edns_opts_back_out, ( ssl_upstream && env->cfg->pad_queries - ? env->cfg->pad_queries_block_size : 0)); + ? env->cfg->pad_queries_block_size : 0 )); if(!sq) { free(cb); return NULL; diff --git a/util/config_file.h b/util/config_file.h index 480b800c0..8f9dfa75a 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -601,12 +601,12 @@ struct config_file { /** number of slabs for dnscrypt nonces cache */ size_t dnscrypt_nonce_cache_slabs; - /** EDNS padding according to FC7830 and RFC8467 */ + /** EDNS padding according to RFC7830 and RFC8467 */ /** true to enable padding of responses (default: on) */ int pad_responses; /** block size with which to pad encrypted responses (default: 468) */ size_t pad_responses_block_size; - /** true to enable padding of queries (default: off) */ + /** true to enable padding of queries (default: on) */ int pad_queries; /** block size with which to pad encrypted queries (default: 128) */ size_t pad_queries_block_size; From b7acaaa9b836bec4dc934d9c73f6655989699ba4 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 25 Jan 2021 19:26:19 +0100 Subject: [PATCH 22/45] - Update example.con.in and add a testcase for PR #275. --- doc/example.conf.in | 7 ++ testdata/serve_original_ttl.rpl | 136 ++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 testdata/serve_original_ttl.rpl diff --git a/doc/example.conf.in b/doc/example.conf.in index b9b1c0525..9db622a47 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -598,6 +598,13 @@ server: # A recommended value is 1800. # serve-expired-client-timeout: 0 + # Return the original TTL as received from the upstream name server rather + # than the decrementing TTL as stored in the cache. Enabling this feature + # does not impact cache expiry, it only changes the TTL unbound embeds in + # responses to queries. Note that enabling this feature implicitly disables + # enforcement of the configured minimum and maximum TTL. + # serve-original-ttl: no + # Have the validator log failed validations for your diagnosis. # 0: off. 1: A line per failed user query. 2: With reason and bad IP. # val-log-level: 0 diff --git a/testdata/serve_original_ttl.rpl b/testdata/serve_original_ttl.rpl new file mode 100644 index 000000000..630fb39a4 --- /dev/null +++ b/testdata/serve_original_ttl.rpl @@ -0,0 +1,136 @@ +; config options +server: + access-control: 127.0.0.1 allow_snoop + module-config: "validator iterator" + qname-minimisation: "no" + minimal-responses: no + serve-original-ttl: yes + cache-max-ttl: 1000 + cache-min-ttl: 20 + serve-expired: yes + serve-expired-reply-ttl: 123 + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test serve-original-ttl +; Scenario overview: +; - query for example.com. IN A +; - check that we get an answer for example.com. IN A with the correct TTL +; - query again after a couple seconds and check that we get the original TTL +; (next steps are combination with serve-expired) +; - query again after the TTL expired +; - check that we get the expired cached answer with the original TTL + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we got the correct answer (should be cached) +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Wait a couple of seconds (< 10) +STEP 11 TIME_PASSES ELAPSE 5 + +; Query again +STEP 20 QUERY +ENTRY_BEGIN + REPLY + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we got the cached answer with the original TTL +; (Passively checks that minimum and maximum TTLs are ignored) +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 A 5.6.7.8 + SECTION AUTHORITY + example.com. 3600 NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 3600 A 1.2.3.4 +ENTRY_END + +; Wait for the TTL to expire +STEP 31 TIME_PASSES ELAPSE 3601 + +; Query again +STEP 40 QUERY +ENTRY_BEGIN + REPLY + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we got a stale answer with the original TTL +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 A 5.6.7.8 + SECTION AUTHORITY + example.com. NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. A 1.2.3.4 +ENTRY_END + +; Give time for the pending query to get answered +STEP 51 TRAFFIC + +SCENARIO_END From 83d9f9d26801296fd1f5ee6200f5b15c1092da30 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 12:55:55 +0100 Subject: [PATCH 23/45] Changelog entry for: - Merge PR #408 from fobser: Prevent a few more yacc clashes. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f77355945..2bad8d96b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +26 January 2022: George + - Merge PR #408 from fobser: Prevent a few more yacc clashes. + 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in RFC7830 and RFC8467. From 2925fa46b06e1fef72c523d65635875754280bab Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 13:01:33 +0100 Subject: [PATCH 24/45] Changelog entry for: - Merge PR #275 by Roland van Rijswijk-Deij, Add feature to return the original instead of a decrementing TTL ('serve-original-ttl'). --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 2bad8d96b..1c8af380d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. + - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the + original instead of a decrementing TTL ('serve-original-ttl') 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in From 3b9c7e28263da07e69e38e1739a5d4c77eea6d67 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 13:19:05 +0100 Subject: [PATCH 25/45] Changelog entry for: - Merge PR #355 from noloader: Make ICANN Update CA and DS Trust Anchor static data. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 1c8af380d..fed967d55 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the original instead of a decrementing TTL ('serve-original-ttl') + - Merge PR #355 from noloader: Make ICANN Update CA and DS Trust Anchor + static data. 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in From 3124eb052df3144f3b996e8367ed76bc23e927ac Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 15:31:50 +0100 Subject: [PATCH 26/45] - Ignore cache blacklisting when trying to reply with expired data from cache. (#394) --- doc/Changelog | 2 ++ services/mesh.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index fed967d55..af53d7836 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,8 @@ original instead of a decrementing TTL ('serve-original-ttl') - Merge PR #355 from noloader: Make ICANN Update CA and DS Trust Anchor static data. + - Ignore cache blacklisting when trying to reply with expired data from + cache (#394). 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in diff --git a/services/mesh.c b/services/mesh.c index 69f4d75e3..91d23debf 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1929,7 +1929,9 @@ mesh_serve_expired_callback(void* arg) verbose(VERB_ALGO, "Serve expired: Trying to reply with expired data"); comm_timer_delete(qstate->serve_expired_data->timer); qstate->serve_expired_data->timer = NULL; - if(qstate->blacklist || qstate->no_cache_lookup || qstate->is_drop) { + /* If is_drop or no_cache_lookup (modules that handle their own cache e.g., + * subnetmod) ignore stale data from the main cache. */ + if(qstate->no_cache_lookup || qstate->is_drop) { verbose(VERB_ALGO, "Serve expired: Not allowed to look into cache for stale"); return; From 8ad4c9f92ae3acafac386925d12c1ee084e5a777 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 26 Jan 2021 17:29:22 +0100 Subject: [PATCH 27/45] - Fix compile of unbound-dnstap-socket without dnstap installed. --- Makefile.in | 3 ++- configure | 2 ++ configure.ac | 2 +- doc/Changelog | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in index 99943a650..6809881b6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -248,6 +248,7 @@ DNSTAP_SOCKET_SRC=dnstap/unbound-dnstap-socket.c DNSTAP_SOCKET_OBJ=unbound-dnstap-socket.lo DNSTAP_SOCKET_OBJ_LINK=$(DNSTAP_SOCKET_OBJ) $(COMMON_OBJ) \ $(COMPAT_OBJ) $(SLDNS_OBJ) +DNSTAP_SOCKET_TESTBIN=@DNSTAP_SOCKET_TESTBIN@ LIBUNBOUND_SRC=libunbound/context.c libunbound/libunbound.c \ libunbound/libworker.c LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo ub_event_pluggable.lo @@ -323,7 +324,7 @@ rsrc_unbound_checkconf.o: $(srcdir)/winrc/rsrc_unbound_checkconf.rc config.h TEST_BIN=asynclook$(EXEEXT) delayer$(EXEEXT) \ lock-verify$(EXEEXT) memstats$(EXEEXT) perf$(EXEEXT) \ petal$(EXEEXT) pktview$(EXEEXT) streamtcp$(EXEEXT) \ - unbound-dnstap-socket$(EXEEXT) dohclient$(EXEEXT) \ + $(DNSTAP_SOCKET_TESTBIN) dohclient$(EXEEXT) \ testbound$(EXEEXT) unittest$(EXEEXT) tests: all $(TEST_BIN) diff --git a/configure b/configure index 7957f0dd6..9d10e6ee7 100755 --- a/configure +++ b/configure @@ -649,6 +649,7 @@ ENABLE_DNSCRYPT ENABLE_DNSCRYPT_XCHACHA20 DNSTAP_OBJ DNSTAP_SRC +DNSTAP_SOCKET_TESTBIN DNSTAP_SOCKET_PATH opt_dnstap_socket_path ENABLE_DNSTAP @@ -21191,6 +21192,7 @@ _ACEOF DNSTAP_SOCKET_PATH="$hdr_dnstap_socket_path" + DNSTAP_SOCKET_TESTBIN='unbound-dnstap-socket$(EXEEXT)' DNSTAP_SRC="dnstap/dnstap.c dnstap/dnstap.pb-c.c dnstap/dnstap_fstrm.c dnstap/dtstream.c" diff --git a/configure.ac b/configure.ac index 3e872bca9..ee9ff1696 100644 --- a/configure.ac +++ b/configure.ac @@ -1743,7 +1743,7 @@ dt_DNSTAP([$UNBOUND_RUN_DIR/dnstap.sock], AC_DEFINE_UNQUOTED(DNSTAP_SOCKET_PATH, ["$hdr_dnstap_socket_path"], [default dnstap socket path]) AC_SUBST(DNSTAP_SOCKET_PATH,["$hdr_dnstap_socket_path"]) - + AC_SUBST(DNSTAP_SOCKET_TESTBIN,['unbound-dnstap-socket$(EXEEXT)']) AC_SUBST([DNSTAP_SRC], ["dnstap/dnstap.c dnstap/dnstap.pb-c.c dnstap/dnstap_fstrm.c dnstap/dtstream.c"]) AC_SUBST([DNSTAP_OBJ], ["dnstap.lo dnstap.pb-c.lo dnstap_fstrm.lo dtstream.lo"]) ], diff --git a/doc/Changelog b/doc/Changelog index af53d7836..0ccec087a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,9 @@ - Ignore cache blacklisting when trying to reply with expired data from cache (#394). +26 January 2022: Wouter + - Fix compile of unbound-dnstap-socket without dnstap installed. + 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in RFC7830 and RFC8467. From 9d700e1f850fca1c687789e57f9c43236474a133 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:04:00 +0100 Subject: [PATCH 28/45] - Annotate that we ignore the return value of if_indextoname. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 0ccec087a..268d51ff2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +28 January 2022: Wouter + - Annotate that we ignore the return value of if_indextoname. + 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 629d4de72..b790660f2 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1456,7 +1456,7 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres log_err("inet_ntop failed"); return 0; } - if_indextoname(in6->sin6_scope_id, + (void)if_indextoname(in6->sin6_scope_id, (char *)if_index_name); if (strlen(if_index_name) != 0) { snprintf(addr_buf, sizeof(addr_buf), From 9e6f8567ded09f432842afd96b9fb0a160e037c0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:07:16 +0100 Subject: [PATCH 29/45] - Fix to use correct type for label count in rpz routine. --- doc/Changelog | 1 + services/rpz.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 268d51ff2..f6d32249b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 28 January 2022: Wouter - Annotate that we ignore the return value of if_indextoname. + - Fix to use correct type for label count in rpz routine. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/services/rpz.c b/services/rpz.c index d7dd17f7e..2b6b0ac3f 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -668,7 +668,8 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, int only_exact, int wr, int zones_keep_lock) { uint8_t* ce; - size_t ce_len, ce_labs; + size_t ce_len; + int ce_labs; uint8_t wc[LDNS_MAX_DOMAINLEN+1]; int exact; struct local_zone* z = NULL; From cb55b5906a5748462eb720d2bd5278ecfbef8503 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:11:46 +0100 Subject: [PATCH 30/45] - Fix empty clause warning in config_file nsid parse. --- doc/Changelog | 1 + util/config_file.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index f6d32249b..8e6794136 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 28 January 2022: Wouter - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. + - Fix empty clause warning in config_file nsid parse. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/util/config_file.c b/util/config_file.c index 28816f747..4d87dee9b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -2064,8 +2064,9 @@ uint8_t* cfg_parse_nsid(const char* str, uint16_t* nsid_len) if ((nsid = (uint8_t *)strdup(str + 6))) *nsid_len = strlen(str + 6); - } else if (strlen(str) % 2) + } else if (strlen(str) % 2) { ; /* hex string has even number of characters */ + } else if (*str && (nsid = calloc(1, strlen(str) / 2))) { const char *ch; From 3a19ceaae67fc0d33dd79a3057834f1f54d2999c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:14:19 +0100 Subject: [PATCH 31/45] - Fix to use correct type for label count in ipdnametoaddr rpz routine. --- doc/Changelog | 1 + util/net_help.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8e6794136..83e617c9a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. - Fix empty clause warning in config_file nsid parse. + - Fix to use correct type for label count in ipdnametoaddr rpz routine. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/util/net_help.c b/util/net_help.c index c5216bc2d..3b5527adf 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -321,7 +321,7 @@ static int ipdnametoaddr(uint8_t* dname, size_t dnamelen, struct sockaddr_storage* addr, socklen_t* addrlen, int* af) { uint8_t* ia; - size_t dnamelabs = dname_count_labels(dname); + int dnamelabs = dname_count_labels(dname); uint8_t lablen; char* e = NULL; int z = 0; From ad8104bb7c3d27a3f70a27e764455112d541e454 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:15:45 +0100 Subject: [PATCH 32/45] - Fix empty clause warning in edns pass for padding. --- doc/Changelog | 1 + util/edns.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 83e617c9a..66b46d230 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Fix to use correct type for label count in rpz routine. - Fix empty clause warning in config_file nsid parse. - Fix to use correct type for label count in ipdnametoaddr rpz routine. + - Fix empty clause warning in edns pass for padding. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/util/edns.c b/util/edns.c index 5d2121636..84308449c 100644 --- a/util/edns.c +++ b/util/edns.c @@ -166,8 +166,9 @@ int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, return 0; if(!cfg->pad_responses || c->type != comm_tcp || !c->ssl - || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING)) + || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING)) { ; /* pass */ + } else if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_PADDING , 0, NULL, region)) From 0ea86f6ccb68f885b2ed0d553e4627bc97b6f329 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 11:19:34 +0100 Subject: [PATCH 33/45] - Fix fwd ancil test post script when not supported. --- doc/Changelog | 1 + testdata/fwd_ancil.tdir/fwd_ancil.post | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 66b46d230..cae27729a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix empty clause warning in config_file nsid parse. - Fix to use correct type for label count in ipdnametoaddr rpz routine. - Fix empty clause warning in edns pass for padding. + - Fix fwd ancil test post script when not supported. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/testdata/fwd_ancil.tdir/fwd_ancil.post b/testdata/fwd_ancil.tdir/fwd_ancil.post index a74ba856e..6578151af 100644 --- a/testdata/fwd_ancil.tdir/fwd_ancil.post +++ b/testdata/fwd_ancil.tdir/fwd_ancil.post @@ -14,5 +14,9 @@ fi kill_pid $FWD_PID if fgrep "service stopped" unbound.log; then exit 0 -fi +fi +if fgrep "disable interface-automatic" unbound.log; then + echo "skip test" + exit 0 +fi kill_pid $UNBOUND_PID From 7262a249f1c55116b14e8e6bae08a6b0224d00cd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 29 Jan 2021 16:34:46 +0100 Subject: [PATCH 34/45] - Fix for doxygen 1.8.20 compatibility. --- doc/Changelog | 3 +++ doc/unbound.doxygen | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index cae27729a..33668733c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +29 January 2022: Wouter + - Fix for doxygen 1.8.20 compatibility. + 28 January 2022: Wouter - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. diff --git a/doc/unbound.doxygen b/doc/unbound.doxygen index 45f49b367..4c32d8943 100644 --- a/doc/unbound.doxygen +++ b/doc/unbound.doxygen @@ -1143,7 +1143,7 @@ COMPACT_LATEX = NO # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. -PAPER_TYPE = a4wide +#PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. @@ -1451,7 +1451,7 @@ EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). -PERL_PATH = /usr/bin/perl +#PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool @@ -1473,7 +1473,7 @@ CLASS_DIAGRAMS = YES # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. -MSCGEN_PATH = +#MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented From a8485d58ca33b9841841e552dc98230e401b5588 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 1 Feb 2021 16:57:56 +0100 Subject: [PATCH 35/45] - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. --- doc/Changelog | 3 +++ services/outside_network.c | 25 +++++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index af53d7836..4a095a076 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 February 2022: George + - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. + 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the diff --git a/services/outside_network.c b/services/outside_network.c index 11559ffac..6c6b42ccb 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -90,6 +90,10 @@ static int randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, static void waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w); +/** remove reused element from tree and lru list */ +static void reuse_tcp_remove_tree_list(struct outside_network* outnet, + struct reuse_tcp* reuse); + int pending_cmp(const void* key1, const void* key2) { @@ -424,8 +428,11 @@ static int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { log_reuse_tcp(VERB_CLIENT, "reuse_tcp_insert", &pend_tcp->reuse); - if(pend_tcp->reuse.item_on_lru_list) + if(pend_tcp->reuse.item_on_lru_list) { + if(!pend_tcp->reuse.node.key) + log_err("internal error: reuse_tcp_insert: on lru list without key"); return 1; + } pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { @@ -477,7 +484,7 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, if(outnet->tcp_reuse.root == NULL || outnet->tcp_reuse.root == RBTREE_NULL) return NULL; - if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node, + if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse, &result)) { /* exact match */ /* but the key is on stack, and ptr is compared, impossible */ @@ -661,6 +668,14 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) pend->reuse.cp_more_write_again = 0; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; + + /* Remove from tree in case the is_ssl will be different and causes the + * identity of the reuse_tcp to change; could result in nodes not being + * deleted from the tree (because the new identity does not match the + * previous node) but their ->key would be changed to NULL. */ + if(pend->reuse.node.key) + reuse_tcp_remove_tree_list(w->outnet, &pend->reuse); + if(pend->c->ssl) pend->reuse.is_ssl = 1; else pend->reuse.is_ssl = 0; @@ -677,8 +692,10 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) static void reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) { - if(!reuse->item_on_lru_list) + if(!reuse->item_on_lru_list) { + log_err("internal error: we need to touch the lru_list but item not in list"); return; /* not on the list, no lru to modify */ + } if(!reuse->lru_prev) return; /* already first in the list */ /* remove at current position */ @@ -847,7 +864,7 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, verbose(VERB_CLIENT, "reuse_tcp_remove_tree_list"); if(reuse->node.key) { /* delete it from reuse tree */ - (void)rbtree_delete(&outnet->tcp_reuse, &reuse->node); + (void)rbtree_delete(&outnet->tcp_reuse, reuse); reuse->node.key = NULL; } /* delete from reuse list */ From 21def26405345915711af8a43c191627dce305ed Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 1 Feb 2021 17:02:19 +0100 Subject: [PATCH 36/45] - Hide our time traveling abilities. --- doc/Changelog | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 0e8687470..b4778827c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,10 +1,10 @@ -1 February 2022: George +1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. -29 January 2022: Wouter +29 January 2021: Wouter - Fix for doxygen 1.8.20 compatibility. -28 January 2022: Wouter +28 January 2021: Wouter - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. - Fix empty clause warning in config_file nsid parse. @@ -12,7 +12,7 @@ - Fix empty clause warning in edns pass for padding. - Fix fwd ancil test post script when not supported. -26 January 2022: George +26 January 2021: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the original instead of a decrementing TTL ('serve-original-ttl') @@ -21,10 +21,10 @@ - Ignore cache blacklisting when trying to reply with expired data from cache (#394). -26 January 2022: Wouter +26 January 2021: Wouter - Fix compile of unbound-dnstap-socket without dnstap installed. -22 January 2022: Willem +22 January 2021: Willem - Padding of queries and responses with DNS over TLS as specified in RFC7830 and RFC8467. From a5a9672dc426ff0213cb3a1004cb3ffcf5e9ee84 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 08:48:44 +0100 Subject: [PATCH 37/45] - branch-1.13.1 is created, with release-1.13.1rc1 tag. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b4778827c..690b0b268 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +2 February 2021: Wouter + - branch-1.13.1 is created, with release-1.13.1rc1 tag. + 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. From bc013b66ed1716a1a703cc98b4d8406e75a54fe7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 13:18:18 +0100 Subject: [PATCH 38/45] - Fix dynlibmod link on rhel8 for -ldl inclusion. --- configure | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++- configure.ac | 6 ++++- doc/Changelog | 1 + 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 9d10e6ee7..c896bbc96 100755 --- a/configure +++ b/configure @@ -17236,7 +17236,66 @@ $as_echo "#define WITH_DYNLIBMODULE 1" >>confdefs.h DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' if test $on_mingw = "no"; then - DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + # link with -ldl if not already there, for all executables because + # dlopen call is in the dynlib module. For unbound executable, also + # export symbols. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +$as_echo_n "checking for library containing dlopen... " >&6; } +if ${ac_cv_search_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_dlopen+:} false; then : + break +fi +done +if ${ac_cv_search_dlopen+:} false; then : + +else + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +$as_echo "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + DYNLIBMOD_EXTRALIBS="-export-dynamic" else DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" fi diff --git a/configure.ac b/configure.ac index ee9ff1696..0b37bfc30 100644 --- a/configure.ac +++ b/configure.ac @@ -642,7 +642,11 @@ if test x_$withval != x_no; then DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' AC_SUBST(DYNLIBMOD_HEADER) if test $on_mingw = "no"; then - DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + # link with -ldl if not already there, for all executables because + # dlopen call is in the dynlib module. For unbound executable, also + # export symbols. + AC_SEARCH_LIBS([dlopen], [dl]) + DYNLIBMOD_EXTRALIBS="-export-dynamic" else DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" fi diff --git a/doc/Changelog b/doc/Changelog index 690b0b268..fcf84deb5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 2 February 2021: Wouter - branch-1.13.1 is created, with release-1.13.1rc1 tag. + - Fix dynlibmod link on rhel8 for -ldl inclusion. 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. From f9a1ac3f0b1a415d8085e113d44797e62c436a52 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 14:30:53 +0100 Subject: [PATCH 39/45] - Fix windows dependency on libssp.dll because of default stack protector in mingw. --- configure.ac | 2 ++ doc/Changelog | 2 ++ makedist.sh | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/configure.ac b/configure.ac index 0b37bfc30..9f3455c0f 100644 --- a/configure.ac +++ b/configure.ac @@ -1442,6 +1442,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi @@ -1458,6 +1459,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi diff --git a/doc/Changelog b/doc/Changelog index fcf84deb5..328b84663 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 2 February 2021: Wouter - branch-1.13.1 is created, with release-1.13.1rc1 tag. - Fix dynlibmod link on rhel8 for -ldl inclusion. + - Fix windows dependency on libssp.dll because of default stack + protector in mingw. 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. diff --git a/makedist.sh b/makedist.sh index c3bfcaad3..25cabe136 100755 --- a/makedist.sh +++ b/makedist.sh @@ -412,6 +412,11 @@ if [ "$DOWIN" = "yes" ]; then cp ../unbound.exe ../unbound-anchor.exe ../unbound-host.exe ../unbound-control.exe ../unbound-checkconf.exe ../unbound-service-install.exe ../unbound-service-remove.exe ../LICENSE ../winrc/unbound-control-setup.cmd ../winrc/unbound-website.url ../winrc/service.conf ../winrc/README.txt ../contrib/create_unbound_ad_servers.cmd ../contrib/warmup.cmd ../contrib/unbound_cache.cmd . mkdir libunbound cp ../../unbound_shared/unbound.h ../../unbound_shared/.libs/libunbound*.dll ../../unbound_shared/.libs/libunbound.dll.a ../../unbound_shared/.libs/libunbound.a ../../unbound_shared/.libs/libunbound*.def ../../sslsharedinstall/lib/libcrypto.dll.a ../../sslsharedinstall/lib/libssl.dll.a ../../sslsharedinstall/bin/libcrypto*.dll ../../sslsharedinstall/bin/libssl*.dll ../../wxpinstall/bin/libexpat*.dll ../../wxpinstall/lib/libexpat.dll.a libunbound/. + if test "$W64" = "no"; then + cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libssp-0.dll libunbound/. + else + cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll libunbound/. + fi # zipfile zip -r ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf root.key unbound-website.url create_unbound_ad_servers.cmd warmup.cmd unbound_cache.cmd Changelog libunbound info "Testing $file" From 18840665bcbb28c9de07bc3b20157a0dde13f8fd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 14:31:05 +0100 Subject: [PATCH 40/45] And autoconf. --- configure | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configure b/configure index c896bbc96..12f6a97d6 100755 --- a/configure +++ b/configure @@ -19825,6 +19825,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi @@ -19844,6 +19845,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi From aa8dfe94d31e11c19897444b955af6ac10aec1cd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 14:52:05 +0100 Subject: [PATCH 41/45] Fixup to add to LIBS. --- configure | 4 ++-- configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 12f6a97d6..622f51e87 100755 --- a/configure +++ b/configure @@ -19825,7 +19825,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi @@ -19845,7 +19845,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi diff --git a/configure.ac b/configure.ac index 9f3455c0f..2d88048f7 100644 --- a/configure.ac +++ b/configure.ac @@ -1442,7 +1442,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi @@ -1459,7 +1459,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi From 46939294710d24a37f9f838141f26e6b063b01f3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 17:04:29 +0100 Subject: [PATCH 42/45] - Fix indentation of root anchor for use by windows install script. --- doc/Changelog | 1 + smallapp/unbound-anchor.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 328b84663..eea220c41 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Fix dynlibmod link on rhel8 for -ldl inclusion. - Fix windows dependency on libssp.dll because of default stack protector in mingw. + - Fix indentation of root anchor for use by windows install script. 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index c4e9b3bfd..3e6fc6e6f 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -183,7 +183,7 @@ static const char DS_TRUST_ANCHOR[] = /* The anchors must start on a new line with ". IN DS and end with \n"[;] * because the makedist script greps on the source here */ /* anchor 20326 is from 2017 */ - ". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; +". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; /** verbosity for this application */ static int verb = 0; From c365e3ab9af99e3c06a8f3431f6935a383b56c51 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 4 Feb 2021 09:18:40 +0100 Subject: [PATCH 43/45] - release 1.13.1rc2 tag on branch-1.13.1 with added changes of 2 feb. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index eea220c41..37d496835 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 February 2021: Wouter + - release 1.13.1rc2 tag on branch-1.13.1 with added changes of 2 feb. + 2 February 2021: Wouter - branch-1.13.1 is created, with release-1.13.1rc1 tag. - Fix dynlibmod link on rhel8 for -ldl inclusion. From 450155bfa03a1e82020ff8af5ab08788ce404daa Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 9 Feb 2021 09:16:23 +0100 Subject: [PATCH 44/45] Changelog note for 1.13.1 release and main branch is 1.13.2 in development. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 2 ++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/configure b/configure index 622f51e87..b067e48fe 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.13.1. +# Generated by GNU Autoconf 2.69 for unbound 1.13.2. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.13.1' -PACKAGE_STRING='unbound 1.13.1' +PACKAGE_VERSION='1.13.2' +PACKAGE_STRING='unbound 1.13.2' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1460,7 +1460,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.13.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.13.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1525,7 +1525,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.13.1:";; + short | recursive ) echo "Configuration of unbound 1.13.2:";; esac cat <<\_ACEOF @@ -1753,7 +1753,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.13.1 +unbound configure 1.13.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2462,7 +2462,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.13.1, which was +It was created by unbound $as_me 1.13.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2814,11 +2814,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=13 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=2 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=12 +LIBUNBOUND_REVISION=13 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2898,6 +2898,7 @@ LIBUNBOUND_AGE=1 # 1.12.0 had 9:10:1 # 1.13.0 had 9:11:1 # 1.13.1 had 9:12:1 +# 1.13.2 had 9:13:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21760,7 +21761,7 @@ _ACEOF -version=1.13.1 +version=1.13.2 date=`date +'%b %e, %Y'` @@ -22279,7 +22280,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.13.1, which was +This file was extended by unbound $as_me 1.13.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22345,7 +22346,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.13.1 +unbound config.status 1.13.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 2d88048f7..cba6ca018 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[13]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MICRO],[2]) AC_INIT([unbound],m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]),[unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues],[unbound]) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=12 +LIBUNBOUND_REVISION=13 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -98,6 +98,7 @@ LIBUNBOUND_AGE=1 # 1.12.0 had 9:10:1 # 1.13.0 had 9:11:1 # 1.13.1 had 9:12:1 +# 1.13.2 had 9:13:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 37d496835..510d0e4a9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 4 February 2021: Wouter - release 1.13.1rc2 tag on branch-1.13.1 with added changes of 2 feb. + This became 1.13.1 release tag on 9 feb. The main branch is set + to version 1.13.2. 2 February 2021: Wouter - branch-1.13.1 is created, with release-1.13.1rc1 tag. From e0d426ebb10653a78bf5c4053198f6ac19bfcd3e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 9 Feb 2021 10:38:55 +0100 Subject: [PATCH 45/45] - Fix for Python 3.9, no longer use deprecated functions of PyEval_CallObject (now PyObject_Call), PyEval_InitThreads (now none), PyParser_SimpleParseFile (now Py_CompileString). --- doc/Changelog | 5 +++++ libunbound/python/libunbound.i | 6 +++++ pythonmod/pythonmod.c | 41 ++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 510d0e4a9..aa45145df 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +9 February 2021: Wouter + - Fix for Python 3.9, no longer use deprecated functions of + PyEval_CallObject (now PyObject_Call), PyEval_InitThreads (now + none), PyParser_SimpleParseFile (now Py_CompileString). + 4 February 2021: Wouter - release 1.13.1rc2 tag on branch-1.13.1 with added changes of 2 feb. This became 1.13.1 release tag on 9 feb. The main branch is set diff --git a/libunbound/python/libunbound.i b/libunbound/python/libunbound.i index a23c45b9c..ab244a6fb 100644 --- a/libunbound/python/libunbound.i +++ b/libunbound/python/libunbound.i @@ -916,7 +916,13 @@ int _ub_resolve_async(struct ub_ctx* ctx, char* name, int rrtype, int rrclass, v struct cb_data* id; id = (struct cb_data*) iddata; arglist = Py_BuildValue("(OiO)",id->data,status, SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ub_result, 0 | 0 )); // Build argument list +#if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) + /* for python before 3.9 */ fresult = PyEval_CallObject(id->func,arglist); // Call Python +#else + /* for python 3.9 and newer */ + fresult = PyObject_Call(id->func,arglist,NULL); +#endif Py_DECREF(id->func); Py_DECREF(id->data); free(id); diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 9006429ef..040ff7051 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -299,7 +299,10 @@ int pythonmod_init(struct module_env* env, int id) PyImport_AppendInittab(SWIG_name, (void*)SWIG_init); #endif Py_Initialize(); +#if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION <= 6) + /* initthreads only for python 3.6 and older */ PyEval_InitThreads(); +#endif SWIG_init(); mainthr = PyEval_SaveThread(); } @@ -354,6 +357,8 @@ int pythonmod_init(struct module_env* env, int id) /* TODO: deallocation of pe->... if an error occurs */ if (PyRun_SimpleFile(script_py, pe->fname) < 0) { +#if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) + /* for python before 3.9 */ log_err("pythonmod: can't parse Python script %s", pe->fname); /* print the error to logs too, run it again */ fseek(script_py, 0, SEEK_SET); @@ -369,9 +374,45 @@ int pythonmod_init(struct module_env* env, int id) /* ignore the NULL return of _node, it is NULL due to the parse failure * that we are expecting */ (void)PyParser_SimpleParseFile(script_py, pe->fname, Py_file_input); +#else + /* for python 3.9 and newer */ + char* fstr = NULL; + size_t flen = 0; + log_err("pythonmod: can't parse Python script %s", pe->fname); + /* print the error to logs too, run it again */ + fseek(script_py, 0, SEEK_END); + flen = (size_t)ftell(script_py); + fstr = malloc(flen+1); + if(!fstr) { + log_err("malloc failure to print parse error"); + PyGILState_Release(gil); + fclose(script_py); + return 0; + } + fseek(script_py, 0, SEEK_SET); + if(fread(fstr, flen, 1, script_py) < 1) { + log_err("file read failed to print parse error: %s: %s", + pe->fname, strerror(errno)); + PyGILState_Release(gil); + fclose(script_py); + free(fstr); + return 0; + } + fstr[flen] = 0; + /* we compile the string, but do not run it, to stop side-effects */ + /* ignore the NULL return of _node, it is NULL due to the parse failure + * that we are expecting */ + (void)Py_CompileString(fstr, pe->fname, Py_file_input); +#endif log_py_err(); PyGILState_Release(gil); fclose(script_py); +#if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) + /* no cleanup needed for python before 3.9 */ +#else + /* cleanup for python 3.9 and newer */ + free(fstr); +#endif return 0; } #if PY_MAJOR_VERSION < 3